Vorsicht bei Docker-Updates
Aktuell schreibe ich hier mehr zu Docker als mir lieb ist. Es ist eigentlich absurd: Ich verwende Docker seit Jahren täglich und in der Regel ohne irgendwelche Probleme. Aber in den letzten Wochen prasseln Firewall-Inkompatibilitäten und anderer Ärger förmlich über mich herein.
Konkret geht es in diesem Beitrag um zwei Dinge:
- Mit dem Update auf containerd 1.7.28 hat Docker eine Sicherheitslücke durch eine zusätzliche AppArmor-Regel behoben. Das ist eigentlich gut, allerdings führt diese Sicherheitsmaßnahme zu Ärger im Zusammenspiel mit gewissen Containern (z.B. immich) unter Host-Systemen mit AppArmor (Ubuntu, Proxmox etc.)
-
Mit Docker Engine 29 verlangt Docker die API-Version 1.44 oder neuer. Programme, die eine ältere API-Version verwenden, produzieren dann den Fehler ‚Client Version 1.nnn is too old‘. Betroffen ist unter anderem das im Docker-Umfeld weit verbreitete Programm Traefik.
AppArmor-Problem / net.ipv4.ip_unprivileged_port_start permission denied
Im Anfang war der Bug, in diesem Fall CVE-2025-52881. Ein Angreifer kann runc (das wiederum Teil von containerd.io ist) mit Shared Mounts dazu bringen, /proc-Schreibvorgänge auf andere procfs-Dateien umzuleiten. Das ist wiederum sicherheitstechnisch ziemlich ungünstig (Severity ist High). Docker hat das Problem mit containerd 1.7.28-2 behoben — aber jetzt spießt es sich mit AppArmor, das nicht mehr den kompletten Pfad sieht und deswegen eingreift. Der Docker-Security-Fix kann auf Hosts mit AppArmor also dazu führen, dass auch korrekte Zugriffe blockiert werden. Die beste Beschreibung gibt dieser Blog-Beitrag.
Ich kann aus eigener Erfahrung nicht viel zu diesem Problem sagen. Ich betreibe aktuell kein System, das betroffen ist. Besonders oft tritt der Bug in Kombination mit Proxmox oder LXC auf (siehe dieses containerd Issue). Aber auch die weit verbreitete immich.app zum Foto-Management ist betroffen (siehe diese Diskussion).
Die in den verlinkten Beiträgen präsentierten Lösungsvorschläge sind leider allesamt wenig überzeugend: Das Docker-Update nicht durchführen/blockieren, eine alte Docker-Version re-installieren, AppArmor-Regeln ändern etc.
Client Version too old
Vollkommen unabhängig vom ersten Probem, aber fast zeitgleich aufgetreten ist der Fehler Client Version 1.nnn too old. Er resultiert daraus, dass die Docker Engine ab Version 29 für die API-Steuerung zumindest die API-Version 1.44 voraussetzt. (Bis zur Docker Enginge 28 reichte die API-Version 1.24.)
docker version
...
Server: Docker Desktop 4.51.0 (210443)
Engine:
Version: 29.0.0
API version: 1.52 (minimum version 1.44) <------
...
Wenn nun ein Programm eine ältere API-Version nutzt, kommt es zum in der Überschrift genannten Fehler. Betroffen ist davon Traefik. (Das ist ein HTTP-Reverse-Proxy für Microservices und Container-Umgebungen.) Dort ist das Problem bekannt und wurde vorgestern mit Traefik Version 3.6.1 behoben.
Wenn Sie also ein Update auf die neueste Docker-Version durchführen, müssen Sie in compose.yaml für die Traefik-Version 3.6.1 oder latest angeben. Denken Sie daran, vor einem Neustart der Container mit compose up ein Update des Traefek-Image mit docker pull traefik zu erledigen!
sudo apt full-upgrade -y
cd /mein/projekt/verzeichnis
docker pull traefik
docker compose down
docker compose up -d
Quellen/Links
AppArmor-Problem / net.ipv4.ip_unprivileged_port_start permission denied (containerd 1.7.28)
- https://github.com/containerd/containerd/issues/12484
- https://nvd.nist.gov/vuln/detail/CVE-2025-52881
- https://github.com/immich-app/immich/discussions/23644
- https://blog.ktz.me/apparmors-awkward-aftermath-atop-proxmox-9/
Client Version 1.nn is too old (Docker Engine 29)
- https://docs.docker.com/engine/release-notes/29/
- https://www.docker.com/blog/docker-engine-version-29/
- https://github.com/traefik/traefik/issues/12253
- https://forums.docker.com/t/docker-29-increased-minimum-api-version-breaks-traefik-reverse-proxy/150384
- https://github.com/traefik/traefik/issues/12253
- https://docs.docker.com/engine/deprecated/#deprecate-legacy-api-versions