【发布时间】:2016-01-13 01:27:30
【问题描述】:
我正在尝试从正在运行的 Docker 容器中访问 etcd。当我跑步时
curl http://172.17.42.1:4001/v2/keys
我明白了
curl: (7) Failed to connect to 172.17.42.1 port 4001: Connection refused
我有四个其他主机可以正常工作,但是这台机器上的每个容器都有这个问题。我真的不知道发生了什么,我不知道如何调试它。
我的 etcd 环境变量是
ETCD_ADVERTISE_CLIENT_URLS=http://10.242.10.2:2379
ETCD_DISCOVERY=https://discovery.etcd.io/<token_removed>
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://10.242.10.2:2380
ETCD_LISTEN_CLIENT_URLS=http://10.242.10.2:2379,http://127.0.0.1:2379,http://0.0.0.0:4001
ETCD_LISTEN_PEER_URLS=http://10.242.10.2:2380
我也可以从主机访问 etcd
curl http://localhost:4001/v2/keys
所以从容器路由到主机时似乎出现了一些错误。但我无法弄清楚它是什么。谁能指出我正确的方向?
【问题讨论】:
-
您确定 etcd 正在侦听该 IP 吗?
172.17.42.1看起来像 docker0 ip。使用ss -l列出打开的服务器套接字。我猜 etcd 正在监听不同的 IP。 -
嗯,你是对的。 Etcd 只收听
127.0.0.1:4001,即使我的配置中有0.0.0.0:4001。我不知道为什么它不尊重这一点。
标签: networking docker etcd