我一直在编写一个 ansible playbook 来启动一个私有(private) 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] => {“更改”:假,“失败”:真}
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 上尝试了每个),既不给出错误,也不会停止前面提到的错误。
我可以通过 ssh 进入 ec2 并手动启动守护进程
sudo docker -d &
然后手动启动 Redis 实例,但目标是使用 ansible playbook 自动执行此过程,以防我们需要构建额外的 docker 注册表。
有没有人建议我如何使用 ansible 来确保守护程序正在启动?
最佳答案
在 14.04 中,服务名称为 docker .io .
我可以通过手动停止 docker.io 服务并成功重新启动它作为游戏的一部分来精确地重新创建您的问题。
service: name=docker.io state=started
关于ubuntu - 通过 Ansible 启动 Docker 守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942527/