conectando do contêiner docker ao host docker

Eu tenho uma configuração em que executo todas as partes do meu site em contêineres do docker. Meu nginx que escuta na porta 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 -LChain INPUT (policy ACCEPT) target     prot opt source               destination         ACCEPT     all  --  anywhere             anywhere            ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHEDACCEPT     tcp  --  anywhere             anywhere             tcp dpt:sshACCEPT     tcp  --  anywhere             anywhere             tcp dpt:httpACCEPT     tcp  --  anywhere             anywhere             tcp dpt:httpsACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8000DROP       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,ESTABLISHEDChain 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 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 do intervalo IP do docker?

Tudo que você precisa é Docker capacidades de ligação [descontinuar]

Basta se livrar de todas as coisas complicadas que você tentou fazer e começar a usar contêineres nomeados e, em seguida, vinculá-los uns aos outros.

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

Primeiro, execute o contêiner para o 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 recipiente para o segundo recipiente é 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