docker ps -a
:
de09facf7c91 x/x:x "/usr/bin/supervisord" 51 minutes ago Up 24 minutes 8080/tcp development-karl
226a1b80a233 x/x:x "/usr/bin/supervisord" 2 hours ago Up About a minute 0.0.0.0:80-84->80-84/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:1988->1988/tcp, 5672/tcp haproxy
Запустил контейнер с этого: docker run --name development-karl -h development-karl -d x/x:x
часть моей haproxy.cfg
:
backend karl_dev_backend
balance roundrobin
option forwardfor
server karl_dev development-karl cookie development-karl weight 1 maxconn 1024 check
Получите ошибку в логах haproxy:
[ALERT] 059/222244 (683) : parsing [/etc/haproxy/haproxy.cfg:67] : 'server karl_dev' : could not resolve address 'development-karl'.
[ALERT] 059/222244 (683) : Failed to initialize server(s) addr.
Я не знаю, почему это не разрешается?
https://docs.docker.com/engine/userguide/networking/#the-default-bridge-network-in-detail
:
Docker не поддерживает автоматическое обнаружение служб в сети моста по умолчанию. Если вы хотите взаимодействовать с именами контейнеров в этой сети моста по умолчанию, вы должны подключить контейнеры с помощью устаревшей опции docker run --link.
Устаревшая версия - до 1.10.
Наследие: https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/
Дополнительная информация о старых ссылках: https://docs.docker.com/engine/userguide/networking/work-with-networks/#linking-containers-without-using-user-defined-networks
Я не верю, что обнаружение DNS включено в сети моста докеров по умолчанию. Чтобы подключить несколько контейнеров вместе с обнаружением DNS, создайте сеть и подключите оба контейнера к этой сети:
docker network create proxy
docker network connect proxy haproxy
docker network connect proxy development-karl
Вы также можете пройти --net proxy
к docker run
команда вместо выполнения docker network connect
постфактум.