J'ai une configuration où j'exécute toutes les parties de mon site Web dans des conteneurs Docker. Mon nginx qui écoute sur les ports 80 et 443 s'exécute dans un conteneur.
363292a98545 scivm/nginx-django-scivmcom:latest /usr/bin/supervisord 12 days ago Ghost 0.0.0.0:40001->22/tcp, 88.198.57.112:443->443/tcp, 88.198.57.112:80->80/tcp lonely_feynmann
Je souhaite configurer un proxy pour un service dans un autre conteneur. Ce conteneur est lié au port 3000 sur l'hôte:
b38c8ef72d0a mazzolino/strider-dind:latest wrapdocker /usr/bin/ 41 minutes ago Up 41 minutes 0.0.0.0:3000->3000/tcp, 22/tcp, 27017/tcp distracted_einstein
Mes iptables sur l'hôte docker ressemblent à ceci:
root@Ubuntu-1204-precise-64-minimal /var/run # iptables -L
Chain INPUT (policy ACCEPT) target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:8000
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
De l'intérieur du conteneur, je ne peux pas me connecter au port 3000 sur la machine hôte en raison de la configuration iptables.
Je ne veux pas ouvrir le port 3000 sur Internet public.
Existe-t-il un moyen d'ouvrir un pont direct entre le conteneur et l'hôte sur le port 3000?
Ou dois-je modifier mes iptables pour accepter de la gamme ip docker?
la source
docker restart your_container
) doit conserver son adresse IP. Seulement si vous exécutez un nouveau conteneur basé sur une image donnée, il obtiendra une nouvelle IP (docker run -d image command
).La réponse d'Elias est correcte, mais le lien est long et déroutant. Voici un résumé simple:
Tout d'abord, exécutez le conteneur auquel lier et nommez-le:
Exécutez ensuite l'autre conteneur, en le liant au premier conteneur:
Le lien entre le premier conteneur et le deuxième conteneur est placé
/etc/hosts
. Vous pouvez donc l'utiliser comme un nom d'hôte. Par exemple:la source