Debian sid環境でDocker Composeが動かなくなった

Debian sidを再起動したあと自動起動するようになっていたDocker Composeコンテナが動いていません.手動で起動しようとすると以下のようなエラー.

$ docker-compose -v
Traceback (most recent call last):
  File "/usr/bin/docker-compose", line 33, in <module>
    sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')())
             ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/bin/docker-compose", line 25, in importlib_load_entry_point
    return next(matches).load()
           ~~~~~~~~~~~~~~~~~~^^
  File "/usr/lib/python3.13/importlib/metadata/__init__.py", line 179, in load
    module = import_module(match.group('module'))
  File "/usr/lib/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 5, in <module>
    import pipes
ModuleNotFoundError: No module named 'pipes'

そういえば少し前にPythonのversionが上がったのでそれが関係していそうです.
pipes関連のパッケージはdocker.io/docker-composeパッケージの依存には見当たりません.apt-cache searchでさがしても見当たりません.
pipesはPython 3.11で廃止され,3.13で削除されたようです.そしてDebian sidのPythonは少し前に3.13に上がっています.

$ python3 --version
Python 3.13.1
$ dpkg-query -W python3
python3 3.13.1-2

DebianとしてはDocker Comose v1は廃止されているのでv2に上げたいけどgoなどの依存パッケージが欠如しているためv2のパッケージ化が止まっているようです.

という感じでPython 3.13にアップグレードしたDebian sidではdocker-composeパッケージは動かなくなっています.
恐らくDocker Compose v2が降りてくるまでは動かないのかなと.

ということでとりあえずはDocker謹製のものを導入して凌ぐ必要がありそうです.

Docker.com謹製Dockerを導入

以下のページを参考に導入しました.

Debianの関連パッケージを削除
$ sudo apt remove docker.io docker-cli docker-doc docker-compose podman-docker containerd runc
DockerのPGP鍵の登録
$ sudo apt install ca-certificates curl
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo tee /etc/apt/keyrings/docker.asc
$ gpg --show-keys /etc/apt/keyrings/docker.asc
pub   rsa4096 2017-02-22 [SCEA]
      9DC858229FC7DD38854AE2D88D81803C0EBFCD88
uid                      Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]
$ sudo chmod a+r /etc/apt/keyrings/docker.asc
$ w3m -dump https://download.docker.com/linux/debian/dists/
Index of linux/debian/dists/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

../
bookworm/
bullseye/
buster/
jessie/
stretch/
wheezy/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  bookworm stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian   bookworm stable
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$ docker --version
Docker version 27.5.0, build a187fa5
$ docker compose version
Docker Compose version v2.32.4
Note
trixie(testing), sid(unstable), experimentalのパッケージはないようなのでbookworm(stable)用を利用しました.
Docker動作確認
$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/
Docker Cmposeも動作するのを確認
$ cd $PATH_TO_COMPOSE
$ docker compose up
   :

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です