conectando-se do contêiner do docker ao host do docker

conectando-se do contêiner do docker ao host do docker

Eu tenho uma configuração onde executo todas as partes do meu site em contêineres docker. Meu nginx que escuta nas portas 80 e 443 é executado em um contêiner.

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           

Quero configurar um proxy para um serviço em outro contêiner. Este contêiner está vinculado à porta 3000 no host:

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      

Meus iptables no host docker são assim:

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 dentro do contêiner, não consigo me conectar à porta 3000 na máquina host devido à configuração do iptables.

Não quero abrir a porta 3000 para a Internet pública.

Existe uma maneira de abrir uma ponte direta entre o contêiner e o host na porta 3000?

Ou devo modificar meu iptables para aceitar o intervalo de IP do docker?

Responder1

Tudo que você precisa é do Dockercapacidades de link[descontinuada]

Livre-se de todas as coisas complicadas que você tentou fazer e comece a usar contêineres nomeados e, em seguida, vincule-os entre si.

Responder2

A resposta de Elias está correta, mas o link é longo e confuso. Aqui está um resumo simples:

Primeiro, execute o contêiner ao qual vincular e nomeie-o:

sudo docker run -d --name db training/postgres

Em seguida, execute o outro contêiner, vinculando-o ao primeiro contêiner:

sudo docker run -d -P --name web --link db:db training/webapp python app.py

O link do primeiro contêiner para o segundo contêiner é colocado em /etc/hosts. Então você pode usá-lo como um nome de host. Por exemplo:

sudo docker run --name web --link db:db training/webapp ping db

informação relacionada