Centos7 docker-py, похоже, не установлен

Я установил 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

Например, попытка запустить playbook

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

я получаю сообщение: docker-py, похоже, не установлен, но требуется для модуля Ansible Docker.

Я не вижу проблемы. Это CentOS, версия для докеров и доступная версия?

PS: я отключил firewalld и SELinux

Любые идеи? Спасибо


person jzoric    schedule 20.05.2015    source источник
comment
Можете ли вы показать свой Dockerfile?   -  person user2915097    schedule 20.05.2015
comment
У меня нет Dockerfile. Я использую ansible-playbook -i hosts.ini playbook.yml В этой книге есть одна задача, которую я написал в посте. Ты что-то другое имел ввиду или?   -  person jzoric    schedule 20.05.2015


Ответы (4)


Я обнаружил пару проблем с модулем 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-удаление docker-py, чтобы избавиться от более новой версии.

Если вы не используете ansible для их установки, сделайте следующее:

[sudo] pip uninstall docker-py
[sudo] pip install six==1.4
[sudo] pip install docker-py==1.1.0
person Johnny Z    schedule 17.06.2015
comment
Вот и все. Спасибо. - person jzoric; 18.06.2015

Если вы работаете над CentOS7 или подобным, возможно, вы не захотите устанавливать распакованный код через pip. В этом случае полезно знать, что на канале Extras есть пакет python-docker-py. У меня была эта проблема, я установил этот пакет и отправился на скачки.

person sosiouxme    schedule 03.11.2016

tl;dr;

проверьте права доступа к файлам и убедитесь, что ваш пользователь может читать модуль python в /usr/lib/python2.7/site-packages

Контекст

Я недавно обратился к этой проблеме, но это была проблема с разрешением.

Обратите внимание, что я использовал docker 1.9.1, ansible 2.0.1.0 и redhat 7.2.

Я установил docker-py с помощью ansible (возможно, это не ваш случай).

Я сделал это с этой ролью:

- 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 может установить docker-py с umask по умолчанию 0077. В результате ни один пользователь, кроме root, не сможет читать файлы модуля docker-py.

Ваш playbook приведет к ошибке 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

Исправить

Это можно исправить с помощью ansible 2.1, передав параметр umask=0022 в модуль pip (см. https://github.com/ansible/ansible-modules-core/commit/4b46200477216dbcc54611d1c3e6f0cc83757aaf).

А пока я исправил это, удалив все пакеты, установленные в режиме 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
person Raphaël    schedule 17.03.2016

Недавно я столкнулся с разновидностью этой проблемы. Это было не из-за того, что я использовал sudo для установки модуля, а наоборот.

По какой-то причине я решил установить docker с помощью флага --user в pip, а затем у меня возникла неудачная «идея» использовать параметр -b или --become.

Это привело к тому, что «очевидно» установленный docker модуль был недоступен для экземпляра Ansible с повышенными привилегиями, на котором запущен мой playbook. Поделиться на случай, если у кого-то есть «один из тех дней», и он наткнется на это позже. Надеюсь, это поможет вам, так как я заплатил за это напоминание изрядной долей «глупого налога», надеюсь, достаточно для нас обоих. :)

person deoren    schedule 14.04.2019