2015-07-07 3 views
8

Я после этой обучающей программы для обнаружения службы http://jasonwilder.com/blog/2014/07/15/docker-service-discoveryНевозможно открыть Docker контейнеры

Кратко:

Я создал etcd хост работает на xyzd: 4001

docker run -d --name etcd -p 4001:4001 -p 7001:7001 coreos/etcd 

Created сервер серверной Забегая контейнер на backend_serverip: 8000 и докер-регистр

$ docker run -d -p 8000:8000 --name whoami -t jwilder/whoami 
$ docker run --name docker-register -d -e HOST_IP=$(hostname --all-ip-addresses | awk '{print $1}') -e ETCD_HOST=x.y.z.d:4001 -v /var/run/docker.sock:/var/run/docker.sock -t jwilder/docker-register 

создал другой сервер бэкэнда работает контейнер на backend2_serverip: 8000 и докер-регистр

$ docker run -d -p 8000:8000 --name whoami -t jwilder/whoami 
$ docker run --name docker-register -d -e HOST_IP=$(hostname --all-ip-addresses | awk '{print $1}') -e ETCD_HOST=x.y.z.d:4001 -v /var/run/docker.sock:/var/run/docker.sock -t jwilder/docker-register 

Создан клиент работает докер-открыть и убунту изображение

$ docker run -d --net host --name docker-discover -e ETCD_HOST=10.170.71.226:4001 -p 127.0.0.1:1936:1936 -t jwilder/docker-discover 

Когда я смотрю на журналы, чтобы увидеть, если контейнеры регистрируются я вижу дэ folowing ошибки

2015/07/09 19:28:00 error running notify command: python /tmp/register.py, exit status 1 
2015/07/09 19:28:00 Traceback (most recent call last): 
File "/tmp/register.py", line 22, in <module> 
backends = client.read("/backends") 
File "/usr/local/lib/python2.7/dist-packages/etcd/client.py", line 347, in read 
self.key_endpoint + key, self._MGET, params=params, timeout=timeout) 
    File "/usr/local/lib/python2.7/dist-packages/etcd/client.py", line 587, in api_execute 
return self._handle_server_response(response) 
    File "/usr/local/lib/python2.7/dist-packages/etcd/client.py", line 603, in _handle_ser 
etcd.EtcdError.handle(**r) 
    File "/usr/local/lib/python2.7/dist-packages/etcd/__init__.py", line 184, in handle 
raise exc(msg, payload) 
etcd.EtcdKeyNotFound: Key not found : /backends 

Я попытался вручную создать этот каталог, я также попытался запустить контейнеры с р но не удался

ответ

4

Ошибка, которую вы получаете от bug in the code. Проблема в том, что /backends не существует в вашем каталоге etcd. Вы можете создать его самостоятельно вручную, запустив это:

curl -L http://127.0.0.1:4001/v2/keys/backends -XPUT -d dir=true 

После того, как каталог существует в etcd, вы не получите сообщение об ошибке больше.

Я создал тянуть request, который исправляет ошибку, и если вы хотите использовать фиксированный код, вы можете создать свой собственный образ:

git clone [email protected]:rca/docker-register.git 
cd docker-register 
docker build -t docker-register . 

Тогда ваша команда для Docker регистра будет выглядеть так:

$ docker run --name docker-register -d -e HOST_IP=$(hostname --all-ip-addresses | awk '{print $1}') -e ETCD_HOST=x.y.z.d:4001 -v /var/run/docker.sock:/var/run/docker.sock -t docker-register 

Примечание. Я просто удалил jwilder/ из имени изображения в команде, чтобы он использовал вашу локальную версию.

+0

Спасибо, это очень помогает! –

Смежные вопросы