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を無効にしました
何か案は?ありがとう
私は、ドッキングウィンドウ-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
CentOS7などで作業している場合は、パッケージ化されていないコードをpip経由でインストールしたくない場合があります。その場合、Extrasチャネルにパッケージpython-docker-py
があることを知っておくとよいでしょう。私はこの問題を抱え、そのパッケージをインストールし、レースに出かけました。
ファイルのアクセス許可を確認し、ユーザーが/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
最近、この問題のバリエーションに遭遇しました。 Sudo
を使用してモジュールをインストールしたためではなく、その逆でした。
なんらかの理由で、pipの--user
フラグを使用してdocker
をインストールすることを選択し、その後、-b
または--become
オプションを使用するという不幸な「アイデア」がありました。
これにより、「明らかに」インストールされたdocker
モジュールは、私のプレイブックを実行している昇格されたAnsibleインスタンスでは使用できなくなりました。誰かが「あの頃の1つ」を持っていて、後でこれに遭遇した場合に備えて共有する。私がこのリマインダーにかなりの「愚かな税金」を払ったので、それがあなたの助けになることを願っています。 :)