2015-07-07 20 views
8

मैं http://jasonwilder.com/blog/2014/07/15/docker-service-discoveryडोकर कंटेनर

संक्षेप में सेवा खोज के लिए इस ट्यूटोरियल निम्नलिखित हूँ की खोज करने में असमर्थ:

मैं एक etcd मेजबान xyzd पर चल बनाया: 4001

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

एक बैकएंड सर्वर एक चल बनाया गया 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 

एक ग्राहक चल बनाया डोकर-की खोज और एक ubuntu छवि

$ 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 

देखने के लिए जब मैं लॉग पर नज़र डालें कंटेनर पंजीकृत हैं I teh 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 

मैंने मैन्युअल रूप से इस निर्देशिका को बनाने का प्रयास किया, मैंने भी कंटेनर को पी के साथ चलाने की कोशिश की rivileged विकल्प लेकिन कोई भाग्य

उत्तर

4

आपको जो त्रुटि मिल रही है वह bug in the code से है। समस्या यह है कि /backends आपकी आदि निर्देशिका में मौजूद नहीं है। आप इसे मैन्युअल रूप से इसे चलाकर मैन्युअल रूप से बना सकते हैं:

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

एक बार जब निर्देशिका आदि में मौजूद है, तो आपको अब त्रुटि नहीं मिलेगी।

मैं एक पुल request कि बग ठीक करता है बनाया है और आप तय कोड का उपयोग करना चाहते हैं, तो आप अपनी स्वयं की छवि का निर्माण कर सकते हैं:

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

फिर डोकर रजिस्टर के लिए अपने आदेश लगेगा जैसे:

$ 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

धन्यवाद, यह बहुत मदद करता है! –

संबंधित मुद्दे