ubuntu - 通过 Ansible 启动 Docker 守护进程

标签 ubuntu amazon-web-services daemon docker ansible

我一直在编写一个 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/

相关文章:

linux - 启动一个 rust 二进制文件作为 systemd 守护进程

amazon-web-services - 连接资源之前如何在 EC2 实例上运行 Elastic Beanstalk 命令

mysql - 无法在 Grails 应用程序中更新 mysql 中的表

android - Flutter 找不到 ANDROID_HOME 路径

java - Eclipse 无法在 Ubuntu 14.04 中启动

ios - AssumeRole - AWS iOS SDK 示例

c++ - 当程序的守护程序版本崩溃时在哪里查看?

bash - 如何定义一个 shell 脚本变量以在脚本之外具有作用域

c++ - 在 C++ 中挂载 samba 共享