【问题标题】:Ansible/molecule: service docker daemon/engine won’t startAnsible/molecule: service docker daemon/engine 不会启动
【发布时间】:2019-04-10 02:01:42
【问题描述】:

在明确传递命令后,服务模块似乎没有启动我的 docker 守护进程。 Ansible 没有在目标主机中启动 docker 守护进程。 任务:

- name: Install Docker
  apt: 
    name: docker-engine 
    state: present 
    update_cache: yes

- name: Install pip
  apt: 
    name: python-pip 
    state: present

- name: Install docker-py
  pip: 
    name: docker-py
    state: present

- name: Start docker service
  service: 
    name: docker
    state: started
    enabled: yes
...

看起来一切正常。安装 docker-engine,确认状态存在。安装 pip 来安装 docker-py,确认它存在。然后确保 docker 服务已启动。但是,当 尝试创建 docker 容器时,stderr 会抛出以下错误:

fatal: [ubuntu-xenial]: FAILED! => {"changed": false, "msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', error(2, 'No such file or directory'))"}
...

如果登录盒子并启动 docker 服务,问题就会消失。

我可以通过使用command 模块隐式运行命令service docker start 来解决这个问题——这就是它变得奇怪的原因......因为它有效:

- name: Ensure docker service is enabled
  command: service docker start
...

【问题讨论】:

  • 它可能根本不是根本原因,但是...docker-engine 是一个相当旧的 docker 版本,因为该包早已更改名称(所以也许 *.service 名称也是 servicectl 但我'我不确定)。请参阅instructions and methods to install the up-to-date version docker-ce(我链接到 apt debian,但也有 ubuntu)。如果这不能解决问题,您是否尝试过使用 systemctlsysvinit、... 特定模块而不是不可知的 service 来查看是否得到相同的结果?

标签: python docker ansible molecule


【解决方案1】:

我可以通过使用 sysvinit 模块来解决这个问题,而不是服务:

- name: Start docker service
  sysvinit:
    name: docker
    state: started
    enabled: yes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多