web-dev-qa-db-ja.com

Centos7docker-pyがインストールされていないようです

Centos7を最小限にインストールしてから、ansible、docker、pipをインストールし、pipを使用してdocker-pyをインストールしました。

バージョン:
-Dockerバージョン1.6.0、ビルド8aae715/1.6.0
-ansible1.9.1
-docker_py-1.2.2

たとえば、プレイブックを実行しようとしています

-名前:redisコンテナ
 docker:
名前:myredis 
イメージ:redis 
状態:開始済み

私はメッセージを受け取ります:docker-pyはインストールされていないようですが、AnsibleDockerモジュールに必要です。

問題がわかりません。 CentOS、docker、ansibleバージョンですか?

PS:firewalldとSELinuxを無効にしました

何か案は?ありがとう

12
jzoric

私は、ドッキングウィンドウ-PYモジュールと夫婦の問題を発見しました。私はそれらを介して働いた後、私はこれで終わりました。

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

まず、私はあなたの問題に遭遇しました。解決策は、ここで説明されているように、6の最新バージョンを明示的に設定することです: 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
11
Johnny Z

CentOS7などで作業している場合は、パッケージ化されていないコードをpip経由でインストールしたくない場合があります。その場合、Extrasチャネルにパッケージpython-docker-pyがあることを知っておくとよいでしょう。私はこの問題を抱え、そのパッケージをインストールし、レースに出かけました。

6
sosiouxme

tl; dr;

ファイルのアクセス許可を確認し、ユーザーが/usr/lib/python2.7/site-packagesのpythonモジュールを読み取れることを確認してください

環境

私は最近これに行きましたが、これは許可の問題でした。

Docker 1.9.1、ansible 2.0.1.0、redhat7.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 then pip install docker-py => /usr/lib/python2.7/site-packages/dockerはモード0755です

修正

これは、umask=0022パラメーターをpipモジュールに渡すことでansible 2.1で修正できます( 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
2
Raphaël

最近、この問題のバリエーションに遭遇しました。 Sudoを使用してモジュールをインストールしたためではなく、その逆でした。

なんらかの理由で、pipの--userフラグを使用してdockerをインストールすることを選択し、その後、-bまたは--becomeオプションを使用するという不幸な「アイデア」がありました。

これにより、「明らかに」インストールされたdockerモジュールは、私のプレイブックを実行している昇格されたAnsibleインスタンスでは使用できなくなりました。誰かが「あの頃の1つ」を持っていて、後でこれに遭遇した場合に備えて共有する。私がこのリマインダーにかなりの「愚かな税金」を払ったので、それがあなたの助けになることを願っています。 :)

1
deoren