Ubuntu サーバーで apt upgrade を実行したところ、Docker Engine が 29.x に更新されました。
ところがその直後から、Traefik が突然起動しなくなる問題が発生しました。
オンプレでtraefikを使っていたので、だいぶ痛い、、
以下エラーログ
Error response from daemon: client version 1.24 is too old.
Minimum supported API version is 1.44
発生した症状
Traefik のコンテナが起動に失敗し続け、再起動を繰り返す状態になりました。
Traefik v3 系:すべて起動せず
Traefik v2.10:同様に起動せず
Docker Provider / Swarm Provider のどちらでも再現
docker.sock の権限変更や読み取り専用の解除など、一般的な対処を試しましたが改善しませんでした。
原因
トラブルの原因は、Docker 29 系で導入された API の仕様変更でした。
Docker 29 では、サポートされる最小 API バージョンが 1.44 に引き上げられています。
一方で、Traefik が内部で使用している Docker SDK は、初期接続時に API バージョン 1.24 で接続しようとする動作を持っています。
Docker 28 までは古い API も受け入れていましたが、Docker 29 以降はこの古いバージョンを拒否するようになりました。
この仕様変更により、Traefik が docker.sock に接続した瞬間に拒否されてしまい、
結果として Traefik が永遠に起動できない状況が発生していました。
再現条件
私の環境では以下の条件で再現しました。
Docker Engine 29.x(API 1.52、minimum API 1.44)
Traefik v2.10, v3.0, v3.1 すべてで発生
Swarm モードを使用(ただし Docker Provider 単体でも再現)
/var/run/docker.sock を Traefik にマウントしている構成
docker.sock が Podman などに差し替わっているケースではなく、純粋に Docker 本体のものを参照している状態でも再現しました。
解決策
Docker を 28 系にダウングレードする
最終的に、Docker を 28 系に戻すことで Traefik は正常に動作するようになりました。
Ubuntu(noble)では次のようにダウングレードできます。
sudo apt-get install --allow-downgrades -y
docker-ce=5:28.5.2-1~ubuntu.24.04~noble
docker-ce-cli=5:28.5.2-1~ubuntu.24.04~noble
アップグレードで再び 29 系に戻されるのを防ぐため、バージョンを固定しておくと安心です。
sudo apt-mark hold docker-ce docker-ce-cli
ダウングレード後、Traefik は問題なく起動し、Docker Provider / Swarm Provider の双方で正常に動作することを確認しました。
最後に
ちなみにTraefik 公式でも今回の問題は報告されており、今後のバージョンで修正される見込みがあります。
現時点(2025年11月)では、安定版での対応はまだ提供されていません。
https://github.com/traefik/traefik/issues/12253
期待。