HAProxy 1.7 无法解析 docker 1.13.1 容器

HAProxy 1.7 无法解析 docker 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 选项连接容器。

Legacy 是 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

答案1

我不认为默认的 docker bridge 网络上启用了 DNS 发现。要使用 DNS 发现将多个容器连接在一起,请创建一个网络并将两个容器都连接到该网络:

docker network create proxy
docker network connect proxy haproxy
docker network connect proxy development-karl

您还可以传递--net proxydocker run命令,而不是docker network connect事后再执行。

相关内容