【发布时间】: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 versiondocker-ce(我链接到 apt debian,但也有 ubuntu)。如果这不能解决问题,您是否尝试过使用systemctl、sysvinit、... 特定模块而不是不可知的service来查看是否得到相同的结果?
标签: python docker ansible molecule