我通过
创建一个容器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。
答案 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