以普通用户身份运行时,docker-compose 会出现错误“ImportError:没有名为 ssl_match_hostname 的模块”

问题描述 投票:0回答:8

我已经使用“pip2.7 install docker-compose”安装了 docker-compose,但是当我尝试以“普通”用户身份运行它时,我收到以下错误消息:

mike@hugin:~/Tobedeleted$ docker-compose  -v
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 17, 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 .build import tar, exclude_paths
  File "/usr/local/lib/python2.7/dist-packages/docker/utils/build.py", line 4, in <module>
    from .utils import create_archive
  File "/usr/local/lib/python2.7/dist-packages/docker/utils/utils.py", line 18, 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 21, in <module>
    from backports.ssl_match_hostname import match_hostname
ImportError: No module named ssl_match_hostname

此用户是 docker 组的一部分,可以毫无问题地运行“docker ps”等。

如果我尝试运行“sudo docker-compose -v”,我会得到同样的错误。

但是,如果我先运行“sudo su -”,然后发出“docker-compose -v”,我会得到预期的输出。

root@hugin:~# docker-compose -v
docker-compose version 1.11.2, build dfed245

我已经尝试过对 docker-compose、ssl_match_hostname 的各个部分和所有部分进行“pip uninstall”,然后重新安装,但似乎没有任何解决办法。

我现在完全陷入困境 - 有什么想法吗?

python docker pip docker-compose
8个回答
26
投票

你必须使用此命令重新安装 docker-compose:

curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

它对我有用


6
投票

您应该检查 docker-compose 是否存在、是否已安装并正在运行:

$ whereis docker-compose
$ docker-compose --version

通过运行检查是否存在符号链接

pip -> pip2.7
pip -> pip3.6

$ sudo pip install docker-compose

2
投票

更新到

Python 3.10
后,这发生在我身上。 我通过重新安装
docker-compose
来修复它:

pip install docker-compose

注意:在 Manjaro 上运行

yay -S docker-compose
对我来说不起作用。


1
投票

Docker Compose 现在作为 Docker 插件运行。我建议使用:

sudo apt-get install docker-compose-plugin

然后使用

docker compose
代替
docker-compose


0
投票
docker compose pull

如果你有 docker 24


-1
投票

检查执行 ansible 作业的远程主机上的权限。

确保“其他”用户具有模块包的执行权限。

sudo chmod -R  o=rx /usr/local/lib/python2.7/dist-packages/

-1
投票

首先检查/var/run/下是否有docker sock文件。

# ls -l /var/run/docker.sock
# docker info

如果文件不存在,则重启docker服务。如果仍然不存在,请重新启动节点并查看是否有该文件。


-3
投票

也为我工作。

问题 root@ashish:/DOCKER# docker-compose -v 回溯(最近一次调用最后一次): 文件“/usr/local/bin/docker-compose”,第 5 行,位于 从 compose.cli.main 导入 main ModuleNotFoundError:没有名为“compose”的模块

解决方案

curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-

uname -s
-
uname -m
> /usr/local/bin/docker-compose

执行上述命令后,输出应如下所示。

root@ashish:/DOCKER# docker-compose -v docker-compose 版本 1.13.0,内部版本 1719ceb

谢谢 阿什什·贾

© www.soinside.com 2019 - 2024. All rights reserved.