我一直在制作一个ansible playbook来启动一个私有的docker注册表,但是我遇到了让docker运行的问题。我遇到的问题是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-100.us-west-2.compute.amazonaws.com] => {“已更改”:false,“failed”:true} msg:ConnectionError(MaxRetryError(“UnixHTTPConnectionPool(host ='localhost',port = None):使用url超出最大重试次数:/run/docker.sock/v1.12/containers/json?all=1&limit=-1& trunc_cmd = 1& size = 0(引起:[Errno 111]拒绝连接)“,),)
致命:所有主机都已经失败 - 正在中止
我试过把
service docker start
和
shell: sudo docker -d &
在播放强制守护进程开始之前(在不同的时间和单独的ec2上尝试),既不会出错,但是它们不会停止前面提到的错误。
我可以直接进入ec2并使用
手动启动守护进程sudo docker -d &
然后手动启动Redis实例,但目标是使用ansible playbook自动执行此过程,以防我们需要构建其他docker注册表。
有没有人建议我如何使用ansible来确保守护程序正在启动?
答案 0 :(得分:0)
在14.04中,服务名称为 docker.io 。
我可以通过手动停止docker.io服务并使用以下内容成功重新启动它来重新创建您的问题。
service: name=docker.io state=started