Контейнеры, созданные с помощью docker-compose внутри другого контейнера, недоступны - PullRequest
0 голосов
/ 17 декабря 2018

Я использую специальный контейнер для запуска типовых сценариев оболочки, связанных с проектом, чтобы избежать необходимости тестировать сценарии в нескольких средах (mac, win, ubuntu, debian ...) и минимизировать требования к программному обеспечению в операционной системе хоста.,Даже команды docker-compose запускаются из контейнера консоли./var/run/docker.sock привязан к хосту.

Все остальное работает нормально, но, например, если я запускаю docker-compose up traefik в контейнере консоли , запускается traefikобычно, но он недоступен как на хосте, так и даже на другом контейнере в той же сети.Если docker-compose up traefik запускается из хост-ОС (Windows 10), трафик становится доступным, как и ожидалось.Я подозреваю, что это как-то связано с тем, как Docker или docker-compose управляют сетью, но я не совсем уверен.Я проверил, что независимо от того, как я запускаю контейнер traefik, в NirSoft CurrPorts мгновенно появляются одинаковые порты (своего рода графический интерфейс для netstat).

Есть ли способ (и как) это исправить?

РЕДАКТИРОВАТЬ Я понял, что это должно быть как-то ошибкой с моей стороны, так как существуют докерские докеры, и у них, предположительно, нет проблем с отображением контейнеров, доступных из хоста и внешнего мира.

Теперь мне интересно, может ли это быть простой ошибкой конфигурации, либо в настройках моего докера (-compose), либо где-то еще на моей хост-машине, или сделать, например, как Portainer, выполнить некоторые дополнительные шаги, чтобы выставитьзапущенные контейнеры на хост?

1 Ответ

0 голосов
/ 17 декабря 2018

Для целей разработки мы все сопоставляем порт Traefik с 80, поэтому я предполагаю, что то же самое в вашем случае.Предположим, что вы запускаете контейнер Traefik в порту 80, который сопоставлен с портом 80 в хосте.Но, согласно вашему контейнеру Traefik, хост-машина - это не что иное, как контейнер, который используется для запуска скриптов.Но порт 80 контейнера сценариев оболочки не сопоставлен с хост-машиной этого конкретного контейнера.Я надеюсь, что теперь вы потерялись где-то в районе отображения портов и контейнеров.

Позвольте мне описать вашу ситуацию на изображении ниже. enter image description here

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

docker run -t -d -p 80:80 shellScriptImage
docker run -t -d -p 80:80 traefik (- inside the shell script container)

Сделав это, вы можете получить доступ к контейнеру traefik снаружи.

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