Назад | Перейти на главную страницу

HAProxy 1.7 не разрешает контейнер докеров 1.13.1

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 постфактум.