Dockerでエラーが出たので解消した(ERROR: Dependency conflict: an older version of the 'docker-py' package is polluting the namespace.)

  • 6
    いいね
  • 0
    コメント

環境

macOS Sierra
Version 10.12.3

Docker
Community Edition
Version 17.03.0-ce-mac2
Channel: stable

エラー内容

ある日突然、Dockerを起動しようとしたら下記のエラーが発生

$ docker-compose up
ERROR: Dependency conflict: an older version of the 'docker-py' package is polluting the namespace. Run the following command to remedy the issue:
pip uninstall docker docker-py; pip install docker

言われたとおりにやってみても治らない(T_T)

pip uninstall docker docker-py; pip install docker

原因

最近はAWS Elastic Beanstalkを使うことが多いのですが、そのクライアントであるawsebcliで使ってるライブラリのVersionの相性がよくないよう
https://github.com/docker/compose/issues/4569#issuecomment-284891018

解消方法

virtualenvを使って仮想環境に EB CLI をインストールすることで回避
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb-cli3-install-virtualenv.html
ページの内容の通りにインストール

ebを使うときには仮想環境をアクティブ化します

$ source ~/eb-ve/bin/activate

再度Docker起動

$ docker-compose up
ERROR: Dependency conflict: an older version of the 'docker-py' package is polluting the namespace. Run the following command to remedy the issue:
pip uninstall docker docker-py; pip install docker

以下を実行

pip uninstall docker docker-py; pip install docker

※~/eb-ve/bin/activateにパスが通ってない状態で

動作確認

dockerが起動できるようになってると思います。

ebも確認

$ eb ssh
INFO: Attempting to open port 22.
INFO: SSH port 22 open.
..
 _____ _           _   _      ____                       _        _ _
| ____| | __ _ ___| |_(_) ___| __ )  ___  __ _ _ __  ___| |_ __ _| | | __
|  _| | |/ _` / __| __| |/ __|  _ \ / _ \/ _` | '_ \/ __| __/ _` | | |/ /
| |___| | (_| \__ \ |_| | (__| |_) |  __/ (_| | | | \__ \ || (_| | |   <
|_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\
                                       Amazon Linux AMI

ssh、deployできればおk