Centos7 docker-py好像没有安装
Centos7 docker-py doesn't seem to be installed
我安装了 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
我收到消息:docker-py
似乎没有安装,但 Ansible Docker 模块需要。
我看不出问题所在。是CentOS,docker和ansible版本吗?
PS: 我禁用了防火墙和 SELinux
有什么想法吗?
谢谢
我发现 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 版本中有一个错误。解决方法是指定一个旧版本,如下所述:https://github.com/ansible/ansible-modules-core/issues/1227。执行 pip uninstall docker-py 以删除较新的版本。
如果您不使用 ansible 来安装这些,请执行以下操作:
[sudo] pip uninstall docker-py
[sudo] pip install six==1.4
[sudo] pip install docker-py==1.1.0
tl;博士;
检查文件权限并确保您的用户可以阅读 /usr/lib/python2.7/site-packages
中的 python 模块
上下文
我最近去了这个问题,但这是一个权限问题。
注意我用的是docker1.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
问题
当执行 sudo 时,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
如果您使用的是 CentOS7 或类似系统,您可能不想通过 pip 安装未打包的代码。在这种情况下,最好知道 Extras 频道有一个包 python-docker-py
。我遇到了这个问题,安装了那个包,然后开始比赛了。
我最近 运行 研究了这个问题的变体。这不是因为我使用 sudo
安装模块,而是相反。
出于某种原因,我选择使用 pip 的 --user
标志安装 docker
,然后不幸 "idea" 使用 -b
或 --become
选项.
这导致 "obviously" 安装的 docker
模块无法用于提升的 Ansible 实例 运行 我的剧本。共享以防有人 "one of those days" 并在以后偶然发现它。希望它对您有所帮助,因为我为这个提醒付出了很多 "stupid tax",希望对我们俩都足够。 :)
我安装了 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
我收到消息:docker-py
似乎没有安装,但 Ansible Docker 模块需要。
我看不出问题所在。是CentOS,docker和ansible版本吗?
PS: 我禁用了防火墙和 SELinux
有什么想法吗? 谢谢
我发现 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 版本中有一个错误。解决方法是指定一个旧版本,如下所述:https://github.com/ansible/ansible-modules-core/issues/1227。执行 pip uninstall docker-py 以删除较新的版本。
如果您不使用 ansible 来安装这些,请执行以下操作:
[sudo] pip uninstall docker-py
[sudo] pip install six==1.4
[sudo] pip install docker-py==1.1.0
tl;博士;
检查文件权限并确保您的用户可以阅读 /usr/lib/python2.7/site-packages
中的 python 模块上下文
我最近去了这个问题,但这是一个权限问题。
注意我用的是docker1.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
问题
当执行 sudo 时,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
处于模式 0700sudo 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
如果您使用的是 CentOS7 或类似系统,您可能不想通过 pip 安装未打包的代码。在这种情况下,最好知道 Extras 频道有一个包 python-docker-py
。我遇到了这个问题,安装了那个包,然后开始比赛了。
我最近 运行 研究了这个问题的变体。这不是因为我使用 sudo
安装模块,而是相反。
出于某种原因,我选择使用 pip 的 --user
标志安装 docker
,然后不幸 "idea" 使用 -b
或 --become
选项.
这导致 "obviously" 安装的 docker
模块无法用于提升的 Ansible 实例 运行 我的剧本。共享以防有人 "one of those days" 并在以后偶然发现它。希望它对您有所帮助,因为我为这个提醒付出了很多 "stupid tax",希望对我们俩都足够。 :)