Как получить доступ к etcd в докере - PullRequest
0 голосов
/ 24 мая 2018

Я создаю контейнер с помощью

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"это идентификатор контейнера.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

ОК, я исправляю это.Это проблема версии.Мой локальный etcd v2.2.4 (установлен apt install), а версия образа etcd v3.0.4.

Я обновляю их обоих до v3.3.5 и устанавливаю $ ETCDCTL_API = 3.Теперь все в порядке.

0 голосов
/ 24 мая 2018

Кажется, что один и тот же порт использует и localhost, и контейнер Docker.пожалуйста, назначьте другой порт для контейнера.пример 2379-> 2380

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