web-dev-qa-db-fra.com

Comment exposer l'adresse IP et le port du conteneur de docker à l'hôte de docker extérieur sans mappage de port?

Lorsque j'ai créé deux conteneurs Docker pour une même image Web sur un hôte Docker.

  • deux conteneurs de menu fixe écoutés sur le même port 5000
  • port 5000 des deux conteneurs ont été mappés vers différents ports du docker Host: 49155, 49156
  • pour accéder aux deux conteneurs depuis le menu fixe extérieur, vous devez accéder à l'adresse IP et au port _ du hôte docker 49155 ou 49156

Existe-t-il une solution pour accéder à un conteneur de menu fixe à partir de l'hôte de menu fixe par son adresse IP et son port, x.x.x.x:5000, sans mappage de port?

Tous les conteneurs Docker sur différents hôtes Dock peuvent accéder directement les uns aux autres.

44
kino lucky

Vous pouvez accomplir cela avec un alias IP sur l'hôte.

Tout d'abord, ajoutez une interface virtuelle sur l'hôte ayant une adresse IP différente de celle de l'interface principale. Nous appellerons l'interface primaire eth0 avec IP 10.0.0.10, et l'interface virtuelle eth0:1 avec adresse IP 10.0.0.11.

 ifconfig eth0:1 10.0.0.11 netmask 255.255.255.0 up 

Exécutez maintenant les conteneurs et mappez le port 5000 sur l'interface correspondante. Par exemple:

docker run -p 10.0.0.10:5000:5000 -name container1 <someimage> <somecommand>
docker run -p 10.0.0.11:5000:5000 -name container2 <someimage> <somecommand>

Vous pouvez maintenant accéder à chaque conteneur sur le port 5000 en utilisant différentes adresses IP en externe.

63
Ben Whaley