Docker-compose启动失败

时间:2017-02-03 15:53:06

标签: docker docker-compose

我正在尝试在我的Ubuntu 14.04计算机上第一次安装和使用docker-compose,但我失败了:))

我已经使用

通过pip安装了docker-compose

当我尝试运行docker-compose up时,我收到此错误跟踪:

    Traceback (most recent call last):
  File "/usr/local/bin/docker-compose", line 7, in <module>
    from compose.cli.main import main
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 41, in <module>
    from . import errors
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/errors.py", line 10, in <module>
    from docker.errors import APIError
  File "/usr/local/lib/python2.7/dist-packages/docker/__init__.py", line 2, in <module>
    from .api import APIClient
  File "/usr/local/lib/python2.7/dist-packages/docker/api/__init__.py", line 2, in <module>
    from .client import APIClient
  File "/usr/local/lib/python2.7/dist-packages/docker/api/client.py", line 11, in <module>
    from .build import BuildApiMixin
  File "/usr/local/lib/python2.7/dist-packages/docker/api/build.py", line 9, in <module>
    from .. import utils
  File "/usr/local/lib/python2.7/dist-packages/docker/utils/__init__.py", line 2, in <module>
    from .utils import (
  File "/usr/local/lib/python2.7/dist-packages/docker/utils/utils.py", line 19, in <module>
    from .. import tls
  File "/usr/local/lib/python2.7/dist-packages/docker/tls.py", line 5, in <module>
    from .transport import SSLAdapter
  File "/usr/local/lib/python2.7/dist-packages/docker/transport/__init__.py", line 3, in <module>
    from .ssladapter import SSLAdapter
  File "/usr/local/lib/python2.7/dist-packages/docker/transport/ssladapter.py", line 22, in <module>
    urllib3.connection.match_hostname = match_hostname
AttributeError: 'module' object has no attribute 'connection'

鸡蛋版本:

$pip freeze | grep -e urllib3 -e requests -e docker-py                                    
docker-pycreds==0.2.1
requests==2.13.0
urllib3==1.14

我试图像这样导出PYTHONPATH:

export PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages

1 个答案:

答案 0 :(得分:0)

我猜你有多个不同版本的软件包。

请求和urllib3都可以存在于/usr/lib/python2.7/dist-packages//usr/local/lib/python2.7/dist-packages

在ssladapter.py中,先前导入了request.packages.urllib3: try: import requests.packages.urllib3 as urllib3 except ImportError: import urllib3

如果您的requests.packages.urllib3太旧,则会引发错误。

所以你有两种方法来解决这个问题

  1. 将最新的urllib3复制到requests / packages

  2. 删除请求/包中的urllib3,以便docker-compose将使用pythonpath中的urllib3(最新的urllib3)

  3. (您可以通过交互式控制台获取请求的路径:

    >>> import requests
    >>> requests
    <module 'requests' from '/usr/lib/python2.7/dist-packages/requests/__init__.pyc'>