docker_image ansible module error即使在远程主机上安装后也无法导入docker-py

时间:2018-01-26 16:18:47

标签: docker ansible ansible-2.x

我正在尝试使用Ansible的docker_image模块构建我的容器图像。

我的主机详细信息:

OS: Lubuntu 17.10
ansible 2.4.2.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/myuser/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.14 (default, Sep 23 2017, 22:06:14) [GCC 7.2.0]

我的远程计算机详细信息:

Remote OS: CentOS 7.2
Pip modules: docker-py==1.2.3 , six==latest

我在playbook中的任务:

 - name: Install dependent python modules
   pip:
     name: "{{item}}"
     state: present
   with_items:
    - docker-py

 - name: Build container image for api
   docker_image:
      name: api
      path: /home/abc/api/ #location of my Dockerfile

但是我不断收到以下错误消息:

"msg": "Failed to import docker-py - No module named 'requests.packages.urllib3'. Try `pip install docker-py`"

我看到docker-py模块存在一些问题,并且还在以下链接中合并了一些解决方案并修复了ansible docker_container:

https://github.com/ansible/ansible/issues/20492

https://medium.com/dronzebot/ansible-and-docker-py-path-issues-and-resolving-them-e3834d5bb79a

我甚至尝试使用以下命令来运行我的剧本:

python3 ansible-playbook main.yml

以上都没有帮助成功解决它。我现在应该怎么做呢

3 个答案:

答案 0 :(得分:0)

除了docker-py之外,还要安装以下软件包:

- requests 
- urllib3

答案 1 :(得分:0)

解决方法如下:

- name: Install dependent python modules
  pip:
    name: "{{item}}"
    state: present
  with_items:
    - docker-py==1.10.6
    - docker-compose==1.9.0

它适用于docker-py和docker-compose的上述版本。 参考更多信息: https://github.com/ansible/ansible/issues/20380 1

答案 2 :(得分:0)

docker-py模块在特定版本中有一些需求模块。

使用pip卸载当前的docker-py,然后在远程主机上再次使用pip重新安装它。pip uninstall docker-py以及pip install docker-py 之后 我遇到了与docker.py和docker-compose.py

相同的问题