首页 文章

似乎没有安装Centos7 docker-py

提问于
浏览
10

我安装了Centos7 minimal然后:ansible,docker,pip和使用pip我安装了docker-py .

版本:

  • Docker版本1.6.0,版本8aae715 / 1.6.0
  • ansible 1.9.1
  • docker_py-1.2.2

例如,试图运行剧本

- name: redis container
  docker:
    name: myredis
    image: redis
    state: started

我得到msg: docker-py 似乎没有安装,但是Ansible Docker模块是必需的 .

我看不出问题 . 是CentOS,docker和ansible版本吗?

PS:我禁用了firewalld和SELinux

有任何想法吗?谢谢

3 回答

  • 10

    我发现docker-py模块存在一些问题 . 在我完成它们之后,我最终得到了这个:

    - name: Docker-PY
        pip:
          name: "{{ item }}"
        with_items:
        - six==1.4
        - docker-py==1.1.0
    

    首先,我遇到了你的问题 . 解决方案是显式设置最新版本的六个,如下所述:https://github.com/docker/docker-py/issues/344 .

    在那之后,我遇到了一个问题(你也可能遇到它)和docker-py 1.2.2版本中的一个bug . 解决方法是指定旧版本,如下所述:https://github.com/ansible/ansible-modules-core/issues/1227 . 做一个pip卸载docker-py来摆脱新版本 .

    如果您不使用ansible来安装这些,请执行以下操作:

    [sudo] pip uninstall docker-py
    [sudo] pip install six==1.4
    [sudo] pip install docker-py==1.1.0
    
  • 2

    如果你're working on CentOS7 or similar, you may not want to install unpackaged code via pip. In which case, it'很高兴知道Extras Channels 有一个包 python-docker-py . 我遇到了这个问题,安装了这个包,并且参加了比赛 .

  • 5

    tl;博士;

    检查文件权限并确保您的用户可以读取/usr/lib/python2.7/site-packages中的python模块

    上下文

    我最近去了这个问题,但这是一个许可问题 .

    请注意,我使用了docker 1.9.1,ansible 2.0.1.0和redhat 7.2 .

    我用ansible安装了docker-py(这可能不是你的情况) .

    我用这个角色做到了:

    - name: install docker-py with pip
      become: true
      pip: state=present name='{{ item }}'
      with_item:
        - docker-py==1.2.3
        - six==1.10.0
    

    问题

    在sudoing时,ansible可以使用默认的umask 0077安装docker-py . 因此,除root之外的任何用户都无法读取docker-py模块文件 .

    你的剧本将导致 docker-py doesn't seem to be installed, but is required for the Ansible Docker module 错误 .

    注意之间的区别:

    • sudo pip install docker-py => /usr/lib/python2.7/site-packages/docker 处于模式0700

    • sudo su 然后 pip install docker-py => /usr/lib/python2.7/site-packages/docker 处于模式0755

    修复

    通过将 umask=0022 参数传递给pip模块(参见https://github.com/ansible/ansible-modules-core/commit/4b46200477216dbcc54611d1c3e6f0cc83757aaf),可以使用ansible 2.1修复此问题 .

    现在我通过删除模式0700中安装的所有软件包修复它:

    pip uninstall -y six docker-py websocket_client
    

    然后手动重新安装它们:

    sudo su
    # now umask is 0022
    pip install six==1.10.0 docker-py==1.2.3
    

相关问题