У меня есть настройки, где я запускаю все части моего сайта в докер-контейнерах. Мой 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 на хосте докера выглядят так:
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
Из-за контейнера я не могу подключиться к порту 3000 на хост-компьютере из-за конфигурации iptables.
Я не хочу открывать порт 3000 для публичного интернета.
Есть ли способ открыть прямой мост между контейнером и хостом через порт 3000?
Или я должен изменить свои iptables, чтобы принимать из диапазона IP-адресов докера?
источник
docker restart your_container
) должен сохранить свой IP-адрес. Только если вы запустите новый контейнер на основе заданного изображения, он получит новый IP (docker run -d image command
).Ответ Элиаса верен, но связь длинная и запутанная. Вот простое резюме:
Сначала запустите контейнер для ссылки и назовите его:
Затем запустите другой контейнер, связав его с первым контейнером:
Ссылка от первого контейнера до второго контейнера вставлена в
/etc/hosts
. Таким образом, вы можете использовать его как имя хоста. Например:источник