2014-09-19 186 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