2014-09-19 240 views
2

我一直在努力開發一個私人docker註冊表,但我遇到了docker需要運行的問題。我遇到的問題是docker守護程序無法正常啓動。通過Ansible啓動Docker守護進程

我想在我過去做的aws ec2實例上啓動docker守護進程。主機操作系統是Ubuntu 14.04。

第一容器我開始是一個Redis的情況下,它應該具有以下播放開始

- name: Run a Redis instance 
    sudo: yes 
    docker: 
    image: dockerfile/redis 
    ports: 6379:6379 
    name: redis 
    volumes: "{{ host_redis_config_dir }}:{{ container_redis_config_dir }}" 
    state: running 
    command: "redis-server {{ container_redis_config_dir}}/{{ host_redis_config }}" 

它失敗,出現以下錯誤

每次都失敗:[ec2-54-68-242 msg:ConnectionError(MaxRetryError(「UnixHTTPConnectionPool(host ='localhost',port = None));}} :最大重試次數超過url:/run/docker.sock/v1.12/containers/json?all=1 & limit = -1 & trunc_cmd = 1 &大小= 0(產生的原因:[錯誤111]連接被拒絕)」,),)

致命:所有主機都已經失敗 - 中止

我試圖把

service docker start 

shell: sudo docker -d & 

超前的發揮迫使守護進程來啓動(在不同的時間和在一個單獨的EC2嘗試每個),既沒有給出一個錯誤,但他們不停止前面提到的錯誤。

我可以ssh到EC2與

sudo docker -d & 

手動啓動該守護程序,然後手動啓動Redis的實例,但我們的目標是爲這個過程與情況ansible劇本,我們永遠需要實現自動化建立額外的碼頭登記機構。

有沒有人對我如何使用ansible來確保守護進程正在啓動有什麼建議?

回答

0

在14.04服務名稱是docker.io

我可以通過手動停止docker.io服務,併成功重新啓動它,作爲以下內容的一部分,從而精確地重現您的問題。

service: name=docker.io state=started 
+0

是的,我會在Ansible中嘗試'service'命令。您可以嘗試暫停N秒以允許Docker服務運行。 ' - name:暫停允許Docker服務啓動' 'pause:seconds = 3' – 2014-09-23 15:49:39