J'ai un conteneur de docker CentOS sur un hôte de docker CentOS. Lorsque j'utilise cette commande pour exécuter l'image de menu fixe docker run -d --net=Host -p 8777:8777 ceilometer:1.x
, le conteneur de menu fixe reçoit l'adresse IP de l'hôte, mais aucun port ne lui est attribué.
Si je lance la même commande sans "--net = Host", le code fixe docker run -d -p 8777:8777 ceilometer:1.x
expose les ports mais avec une adresse IP différente. La version de docker est 1.10.1. Je veux que le conteneur de menu fixe ait la même adresse IP que l'hôte avec les ports exposés. J'ai également mentionné dans Dockerfile
l'instruction EXPOSE 8777
, mais sans utilité lorsque "--net = Host" est mentionné dans la commande docker run
.
La version de docker est 1.10.1. Je veux que le conteneur Docker ait la même adresse IP que l'hôte avec les ports exposés.
Lorsque vous utilisez --net=Host
, il indique au conteneur d’utiliser la pile réseau des hôtes. Donc, vous ne pouvez pas exposer les ports à l'hôte, car il est l'hôte (en ce qui concerne la pile réseau).
docker inspect
peut ne pas afficher les ports exposés, mais si vous avez une application qui écoute sur un port, celle-ci sera disponible comme si elle fonctionnait sur l'hôte.
J'ai été dérouté par cette réponse. Apparemment, mon image de menu fixe devrait être accessible sur le port 8080. Mais ce n'était pas le cas. Puis j'ai lu
https://docs.docker.com/network/Host/
Citer
Le pilote réseau de l'hôte ne fonctionne que sur les hôtes Linux et n'est pas pris en charge sur Docker pour Mac, Docker pour Windows ou Docker EE pour Windows Server.
C'est plutôt agaçant car je suis sur un Mac. La commande docker devrait signaler une erreur plutôt que de me laisser penser qu'elle était censée fonctionner.
Discussion sur les raisons pour lesquelles il ne rapporte pas d'erreur
https://github.com/docker/for-mac/issues/2716
Pas sûr que je sois convaincu.