Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Centos7 docker-py doesn't seem to be installed

I installed Centos7 minimal and then: ansible, docker, pip and using pip I installed docker-py.

Versions:
- Docker version 1.6.0, build 8aae715/1.6.0
- ansible 1.9.1
- docker_py-1.2.2

Trying to run a playbook, for example

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

i get msg: docker-py doesn't seem to be installed, but is required for the Ansible Docker module.

I can't see the problem. Is it the CentOS, docker and ansible version?

PS: I disabled the firewalld and SELinux

Any ideas? Thanks

like image 538
jzoric Avatar asked May 20 '15 13:05

jzoric


2 Answers

tl;dr;

check file permissions and make sure your user can read the python module in /usr/lib/python2.7/site-packages

Context

I recently went to this is issue but it was a permission problem.

Note that I used docker 1.9.1, ansible 2.0.1.0 and redhat 7.2.

I installed docker-py with ansible (this might not be your case).

I did it with this role:

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

Problem

When sudoing, ansible may install docker-py with default umask 0077. As a result, no user, except root, will be able to read docker-py module files.

Your playbook will result with the docker-py doesn't seem to be installed, but is required for the Ansible Docker module error.

Notice the differences between:

  • sudo pip install docker-py => /usr/lib/python2.7/site-packages/docker is in mode 0700
  • sudo su then pip install docker-py => /usr/lib/python2.7/site-packages/docker is in mode 0755

Fix

This will be fixable with ansible 2.1 by passing the umask=0022 parameter to the pip module (see https://github.com/ansible/ansible-modules-core/commit/4b46200477216dbcc54611d1c3e6f0cc83757aaf).

For now I fixed it by removing all packages installed in mode 0700:

pip uninstall -y six docker-py websocket_client

Then reinstalling them by hand:

sudo su
# now umask is 0022
pip install six==1.10.0 docker-py==1.2.3
like image 105
Raphaël Avatar answered Sep 18 '22 11:09

Raphaël


If you're working on CentOS7 or similar, you may not want to install unpackaged code via pip. In which case, it's good to know that the Extras channel has a package python-docker-py. I had this problem, installed that package, and was off to the races.

like image 40
sosiouxme Avatar answered Sep 16 '22 11:09

sosiouxme