Подключение из контейнера docker к хосту docker

У меня есть настройка, в которой я запускаю все части своего веб-сайта в контейнерах docker. Мой nginx, который прослушивает порты 80 и 443, работает в контейнере.

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           

Я хочу настроить прокси-сервер для службы в другом контейнере. Этот контейнер привязан к порту 3000 на хосте:

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      

Мои iptables на хосте docker выглядят следующим образом:

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         

Из контейнера я не могу подключиться к порту 3000 на хост-компьютере из-за конфигурации iptables.

Я не хочу открывать порт 3000 для общедоступного Интернета.

Есть ли способ открыть прямой мост между контейнером и хостом на порту 3000?

Или я должен изменить свои iptables, чтобы принимать из диапазона IP-адресов docker?

Все, что вам нужно, - это Докер возможности соединения [устарело]

Просто избавьтесь от всего сложного, что вы пытались сделать, и начните использовать именованные контейнеры, а затем свяжите их друг с другом.

Ответ Элиаса правильный, но ссылка длинная и запутанная. Вот простое резюме:

Сначала запустите контейнер, на который нужно установить ссылку, и назовите его:

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

Затем запустите другой контейнер, связав его с первым контейнером:

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

Ссылка из первого контейнера во второй контейнер помещается в /etc/hosts. Таким образом, вы можете использовать его как имя хоста. Например:

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