如何在docker中访问etcd

时间:2018-05-24 06:21:04

标签: docker etcd

我通过

创建一个容器
docker run  -d --name etcd \
-v /usr/share/ca-certificates/:/etc/ssl/certs \ 
quay.io/coreos/etcd:v3.0.4 /usr/local/bin/etcd -advertise-client-urls \ 
http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379

并使用

 docker exec 40cc9457f132 ifconfig

获取其IP" 172.17.0.2"

然后我使用本地etcdctl来获取数据,

 etcdctl --endpoint=http://172.17.0.2:2379 get /testdir/testkey1

但失败了:

Error:  client: etcd cluster is unavailable or misconfigured
error #0: dial tcp 0.0.0.0:2379: getsockopt: connection refused

我该怎么办?

PS: 为了确保数据实际存储在容器中,我首先停止了本地etcd。

systemctl stop etcd

如果我不这样做,我可以获取数据,但

的结果不一样
docker exec 40cc9457f132 etcdctl get /testdir/testkey1

" 40cc9457f132"是容器ID。

2 个答案:

答案 0 :(得分:1)

好的,我解决了。这是版本的问题。 我的本地etcd是v2.2.4(由apt install安装),而etcd映像版本是v3.0.4。

我将它们更新到v3.3.5并设置$ ETCDCTL_API = 3。 现在好像没事。

答案 1 :(得分:0)

似乎同一个端口同时使用localhost和docker容器。 请为容器指定另一个端口。例2379-> 2380

etcdctl --endpoint=http://localhost:2379 -> localhost
etcdctl --endpoint=http://localhost:2380 -> docker container