我試圖從正在運行的Docker容器中訪問etcd。當我運行嘗試訪問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。 – ZeissS
嗯,你是對的。 Etcd只在'127.0.0.1:4001'上監聽,即使我在我的配置中有'0.0.0.0:4001'。我不確定它爲什麼不尊重這一點。 –