0%

ubuntu中docker-compose的使用

本来是根据这个来搭建环境的

但是遇到了一些问题,解决之后记录一下。

安装docker的部分可以用阿里云自带的安装功能,也可以用命令手动安装。

安装docker-compose

教程中写的是

1
2
sudo pip3 install -U pip setuptools
sudo pip3 install docker-compose

我遭遇了ERROR: Cannot uninstall urllib3 2.0.7, RECORD file not found. Hint: The package was installed by debian.

因为这些个包不是pip装的,而是apt装的,所以pip无法卸载它。

出现这种问题,可以用apt先把urllib删了,然后用pip装。

也可以不用匹配装docker-compose。而用apt install docker-compose可以装好

requests版本问题

直接使用docker-compose up会出现docker.errors.DockerException: Error while fetching server API version: HTTPConnection.request() got an unexpected keyword argument 'chunked'的报错。

原因是requests版本太高了。

这里有两种解决方案:

  • pip install requests==2.28.0直接回退版本
  • apt install -y docker-compose-v2之后使用docker compose来取代docker-compose(我采用的)

pip外部管理错误

新版ubuntu会在使用pip时有这个问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.

If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.

If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.

See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

这个更新是为了避免操作系统包管理器 (如pacman、yum、apt) 和 pip 等特定于 Python 的包管理工具之间的冲突

解决方法:

  • 无视风险,坚持访问(查看你的python版本,然后直接删):

    1
    2
    find /usr/lib/ -type d -name "*python*"
    sudo mv /usr/lib/python3.x/EXTERNALLY-MANAGED /usr/lib/python3.x/EXTERNALLY-MANAGED.bk
  • 改用pipx

    1
    2
    3
    4
    5
    sudo apt install pipx
    #使用如下
    pipx install package_name
    pipx ensurepath
    pipx uninstall package_name
  • 使用venv(没研究)