Fehler mit Docker Container nach Linux update

VM mit beliebiger Linux VM aufsetzen ( ich nehme dafür gerne Debians cloud images: https://www.thomas-krenn.com/de/wiki/Cloud_Init_Templates_in_Proxmox_VE_-_Quickstart Das Tutorial verweist aber noch auf Debian12, besser Debian 13 nehmen), da dann docker installieren ( https://docs.docker.com/engine/install/debian/ ) und damit dann die Anleitung von paperless abarbeiten ( https://docs.paperless-ngx.com/setup/ ).
Ich habe eine derzeit laufende Installation in dem lxc. Ich würde gerne die Einstellungen für Paperless in die neue Installation übernehmen. Idealerweise ohne viel Aufwand.
Ich bin hierüber gestopert und dachte, wenn ich eine neue VM anlege, müsste es mit dem install.sh script in der neuen VM, und dem entsprechenden
Code:
Update 23.09.2025 – Paperless-ngx: 1:1-Backup & Restore (Docker/Proxmox/LXC)
auch funktionieren? Wäre für mich mit eingeschränkten Kenntnissen einfacher umsetzbar...
 
Du meinst das für docker und paperless? Ja, das sollte funktionieren, aber es ist nie eine gute Idee Skripte auszuführen, deren Funktionsweise man nicht versteht
 
  • Like
Reactions: news
Nun ja aus der ProxmoxVE Dokumentation zu lxcs:



Es ist ein bekanntes Problem, dass bei größeren Updates docker-Container in LXC-Containern immer mal wieder kaputt gehen. Beide nutzen die gleichen Teile des Kernels, daher ist das im Endeffekt nicht überraschend. Einige Beispiele:

Meistens gab es dann irgendwann dann einen Bugfix oder einen (mehr oder weniger häßlichen) Workaround (meistens lief das auf das Deaktivieren von Sicherheitsmechanismen hinaus, so eine "Lösung" ist keine), womit es dann wieder geht.

Wenn man (wie ich) auf ein derartiges Glücksspiel plus anschließenden Gefrickel keine Lust hat: docker-/podman-Container in einer VM installieren, das ist deutlich stressfreier.

Wenn man (warum auch immer) lieber einen Linux-Container benutzen will, schauen ob die Anleitung der zu betreibenden Software beschreibt, wie man das ganze ohne docker zum Fliegen kriegt, bei pihole oder jellyfin klappt das zum Beispiel ganz gut.

für zukünftige "lessons learned" sowie das damit verbundene "copy&paste" um es für andere leichter rüberzubringen:

Es ist ein bekanntes Problem, dass bei größeren Updates docker-Container in LXC-Containern immer mal wieder kaputt gehen. Beide nutzen die gleichen Teile des Kernels, daher ist das im Endeffekt nicht überraschend. Einige Beispiele:

It is a well-known problem that docker containers in LXC containers occasionally break during major updates. Both use the same parts of the kernel, so this is not surprising. Some examples:

Sollten wir vielleicht einen neuen Thread dafür starten in dem wir alle solche Vorkommnisse mal besser sammeln können ?
 
  • Like
Reactions: Johannes S
Du meinst das für docker und paperless? Ja, das sollte funktionieren, aber es ist nie eine gute Idee Skripte auszuführen, deren Funktionsweise man nicht versteht
Da hast Du sicher recht, aber mir fehlen einfach die Kenntnisse, und die Zeit um mich da tiefer einzuarbeiten. Ich hab damals die Paperless Installation auch nach einer Anleitung gemacht, ohne alle Schritte komplett zu verstehen.
Aber mal, so wie von Dir beschrieben, eine VM zu erstellen und docker und Paperless darin zu installieren, versuche ich einfach mal. Vielleicht bekomme ich es hin meine Daten da dann zu importieren. Im schlimmsten Fall kann ich, wenn ich’s nicht schaffe, die VM einfach wieder löschen und die jetzige Installation behalten.
 
In diesem Beitrag habe ich die Lösung gefunden.
Die neueste Version von container.io macht die Probleme.
Beim Start des Containers kam diese Meldung:

Code:
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: open sysctl net.ipv4.ip_unprivileged_port_start file: reopen fd 8: permission denied: unknown

  1. sudo apt-get remove docker-ce docker-ce-cli containerd.io docker-ce-rootless-extras -y
  2. sudo apt-get install docker-ce docker-ce-cli containerd.io=1.7.28-1~debian.13~trixie -y docker-buildx-plugin docker-compose-plugin
  3. sudo apt-mark hold containerd.io/trixie,now 1.7.28-1~debian.13~trixie
 
sudo apt-mark hold containerd.io/trixie,now 1.7.28-1~debian.13~trixie
Da fehlt der explizite Hinweis, dass man "hold" tunlichst auch wieder entfernen sollte, sobald wieder funktionierende Pakete geliefert werden - denn @FlyByWire schreibt ja von sich:

mir fehlen einfach die Kenntnisse, und die Zeit um mich da tiefer einzuarbeiten.

;-)
 
  • Like
Reactions: Johannes S
In diesem Beitrag habe ich die Lösung gefunden.
Die neueste Version von container.io macht die Probleme.
Beim Start des Containers kam diese Meldung:

Code:
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: open sysctl net.ipv4.ip_unprivileged_port_start file: reopen fd 8: permission denied: unknown

  1. sudo apt-get remove docker-ce docker-ce-cli containerd.io docker-ce-rootless-extras -y
  2. sudo apt-get install docker-ce docker-ce-cli containerd.io=1.7.28-1~debian.13~trixie -y docker-buildx-plugin docker-compose-plugin
  3. sudo apt-mark hold containerd.io/trixie,now 1.7.28-1~debian.13~trixie
... weist Du auch den Befehl (die Befehle) für ubuntu 24.04.3 ?
 
Eventuell einfach mal aufhören mit Container in Container. Wenn man statt LXC so wie es empfohlen wird, eine VM für Docker nutzt, habe ich noch nie Probleme gehabt.
Wurde früher im Proxmox Forum nicht noch gefragt was das Problem und das Szenario ist, um den Kontext besser zu verstehen? Müssen wir sofort auf Leute losgehen und sagen du machst es falsch, versehe ich das gerade richtig?

Ich finde es nicht verwerflich das leute keine XEON-Systeme zuhause betreiben und PCIe-Lanes in Mengen mit 8 PCIe-Slots haben, sondern nur eine dGPU.

Wenn wir also VMs nutzen müsste man also sehr viele Einschnitte in Kauf nehmen um genau einer VM die Ressourcen zu geben weil man PCI-Stubben oder VFIO nutzen muss, wenn die CPU keine eingebaut iGPU hat. Ergo werden selbst Dinge wie eine JetKVM nutzlos, weil der Output der Console auch im Zweifel weg ist. Ich habe also nun eine gigantisch große VM die nur Full-Backups unterstützt statt Snapshot, dazu kommt noch der Overhead eines einen realen-OS+Kernel+RAM+Swap+Management.

Besonders jetzt in zeiten wo es AI300 APUs von AMD gibt finde ich es eigentlich charmant von Docker im LXC bist zu Host Transparent sehen zu können was mit Ollama/LLMs/CUDA/Nvidia-smi passiert. Bei dieser Lösung, die eine valide Alternative ist, gibt es keine sinnlose Bindung von GPUs an Audio-Devices die alles brechen wenn man es nicht richtig macht, man muss keine VBios dumps machen und "hoffen" das Treiber installeren und wenn dann endlich wirklich alles geht, muss man nicht dauernd Hacky-Tools für Anti-Stuck oder Anti-Reset installieren, bis dann die GPU so hart stuckt, dass das Device auf allen leveln Busy ist und man den HOST rebooten muss weil in der VM die GPU stuck ist.

All das passiert mit LXC nicht hier hat man den Vorteil das man einfach mal ollama durch vllm austauschen kann und es einfach ist.

Nun, muss man dafür unbedingt Docker im LXC nutzen? Nein nicht umbedingt.
Ist es eine einfach Lösung um Dinge schnell zu Prototypen? Ja durch aus, nicht jeder schläft mit dem Ansible-Handbuch unter dem Kopfkissen

TL;DR Kontext ist Relevant
 
Also meine VM mit den Docker Containern ist gar nicht so verschwenderisch auf dem kleinen Atom Prozessor. Wenn der kleine Kernel zu viel ist, dann ist die Kiste etwas knapp bemessen. Warum soll ich eigentlich nur inkrementelle Backups vom LXC machen können? Ich habe zuhause einen PBS auf einem steinalten Dualcore Celeron Mini PC, auch das ist vollkommen ausreichend.
Mit meiner Docker VM gab es noch nie Probleme und wenn man ein simples funktionierendes Setup ohne Gebastel möchte, macht man halt Docker in einer VM. Wer gern bastelt darf auch gern ein LXC benutzen, aber dann sollte man sich nicht beschweren wenn es mal knallt.
 
Ich habe also nun eine gigantisch große VM die nur Full-Backups unterstützt statt Snapshot, dazu kommt noch der Overhead eines einen realen-OS+Kernel+RAM+Swap+Management.
Das verstehe ich nicht. Die reguläre Backupfunktion von ProxmoxVE (vzdump mit vma-Archiven) kann immer nur full-Backups, egal ob vms oder lxcs. Der PBS macht dagegen immer ein Full- und inkrementelles Backup, egal ob Dateien, vms oder lxcs.

Ich verstehe ja, dass man lxcs (warum auch immer) bevorzugt, aber das Argument ist eher schwach.

Ich bin auch nicht pauschal gegen lxcs, es gibt natürlich usecases, wofür sie besser funktionieren (je nachdem wie man die geringere Isolation im Vergleich zu VMs in Relation zu den ebenfalls geringeren Ressourcenbedarf bewertet), etwa weil man die iGPU für Rendering unter jellyfin (braucht kein docker) nutzen möchte. Oder für ein pihole, was auch ohne docker installierbar ist und keine Netzwerkfreigaben (die mit bind-mounts in lxcs ja eher frickelig einzurichten sind) braucht. Aber es gibt eben auch Usecases, wo VMs besser funktionieren oder sogar die einzige sinnvolle Option sind.
Wurde früher im Proxmox Forum nicht noch gefragt was das Problem und das Szenario ist, um den Kontext besser zu verstehen? Müssen wir sofort auf Leute losgehen und sagen du machst es falsch, versehe ich das gerade richtig?

Das ist doch gar nicht der Punkt. Ich finde es völlig legitim, docker in lxcs zu benutzen, wenn man sich der Problematik bewusst ist und den damit verbundenen Folgen (Ausfall von Diensten, troubleshooting etc) leben kann. Mein Eindruck ist aber, dass viele Leute das nicht tun, sondern weil sie in irgendeinen clickbait-Youtube-Tutorial, reddit-Homelabbing-Forum das so empfohlen bekommen haben. Oder (noch schlimmer), weil sie eines dieser elendigen Helferskripte benutzen, aber nicht wissen (und auch nicht wissen wollen), wie die intern eigentlich arbeiten. Für paperless braucht man ja z.B. keine GPU für Rendering o.ä., da ist dann docker in einer vm deutlich stressfreier und das ist ja nicht die einzige Anwendung die auch ohne durchgereichte GPU o.ä. in einer VM problemlos betreibbar ist und wo man die Wahrscheinlichkeit für Überraschungen deutlich geringer ist als bei lxcs in docker.

Von daher finde ich es vollkommen legitim zu hinterfragen, ob die Leute einen Grund für eine nicht empfohlene Konfiguration haben und ob der denn tatsächlich valide ist. Falk hat ja bereits geschrieben, dass eine docker-VM nicht unbedingt viele Ressourcen braucht und es verbietet einen ja niemand alle docker-Container in eine VM zu packen, wenn man mit den Ressourcen haushalten muss.

Nun gibt es natürlich Anwendungen (wie immich), wo eine iGPU für Rendering praktisch ist, die sich aber nur mit docker installieren lassen. Das wäre für mich z.B. ein Fall, wo ich es absolut legitim finde, dass dann in einen lxc zu betreiben. Nur: Das sollte in meinen Augen die Ausnahme bleiben, um das Risiko zu minimieren. Mir persönlich ist meine Lebenszeit für troubleshooting zu schade, dafür darf gerne mein Homeserver (der eh die ganze Zeit an ist) mehr RAM verbrauchen.

BTW gab es hier im Thread auch durchaus Hinweise für (in meinen augen gefährliche Workarounds) wie das faktische Deaktivieren von AppArmor oder Downgrade des containerds, es ist also echt nicht so, dass hier nur auf die Leute "losgegangen" wurde, ohne ihnen bei ihren konkreten Problem zu helfen.

Zum aktuellen Problem gibt es auch schon einen Patch (der dann wohl bald seinen Weg in die pve-test und pve-no-subscription Repos finden wird), der AppArmor nicht komplett deaktiviert: https://bugzilla.proxmox.com/show_bug.cgi?id=7006
Stattdessen werden einige Regeln angepasst, die das Nichtfunktionieren von nested Containern triggern. Das reduziert zwar auch die Sicherheit, ist aber natürlich besser als AppArmor ganz zu deaktivieren, da mit aktivierten Nesting diese Regeln (laut Aussage eines Incus-Entwicklers in den Kommentaren beim Bugticket) eh vergleichsweise einfach zu umgehen sind aber dafür immer noch die verbleibenden AppArmor-Regeln greifen. Und so macht AppArmor nicht mehr das Ausführen von docker (und anderen) Containern in einen lxc kaputt.
 
Last edited:
>Das ist doch gar nicht der Punkt. Ich finde es völlig legitim, docker in lxcs zu benutzen, wenn man sich der Problematik bewusst ist und den
>damit verbundenen Folgen (Ausfall von Diensten, troubleshooting etc) leben kann. Mein Eindruck ist aber, dass viele Leute das nicht tun, sondern
>weil sie in irgendeinen clickbait-Youtube-Tutorial, reddit-Homelabbing-Forum das so empfohlen bekommen haben.

eben. ganz genau. und damit sollte man nicht damit aufhören, das immer und immer wieder zu wiederholen, bis der letzte horst es begriffen hat.
 
Mit Docker 29.0.x wurden jetzt auf allen Systemen (LXC, VM und BareMetal) weitere Hürden eingebaut. Portainer, Traefik, Watchtower und vermutlich viele andere laufen nicht mehr.

Keine gute Woche für Docker ..... ;)
 
Mit Docker 29.0.x wurden jetzt auf allen Systemen (LXC, VM und BareMetal) weitere Hürden eingebaut. Portainer, Traefik, Watchtower und vermutlich viele andere laufen nicht mehr.

Keine gute Woche für Docker ..... ;)
ich weiss nicht ob ich das "hürden einbauen" nennen mag. wenn von programmen/tools APIs geändert werden , hat das einen grund. davon abgesehen gibt es ja offensichtlich die möglichkeit clientseitig die gewünschte api version mitzuteilen bzw. zu downgraden. so ne api änderung kommt im kontext von updates dauernd vor, besonders bei major releasewechseln
 
Last edited:
  • Like
Reactions: Johannes S
war/ist es ihnen doch auch!?

https://docs.docker.com/engine/release-notes/29/

Breaking Changes

  • The daemon now requires API version v1.44 or later (Docker v25.0+).

aber was können die denn dafür, daß deren "konsumenten" pennen oder leute ggf. veraltete versionen ihrer tools verwenden um mit docker zu kommunizieren ?


ich mein - noch netter kann man es doch eigentlich ncht haben, als api versioning & downgrade im daemon anzubieten.


https://docs.docker.com/engine/deprecated/#deprecate-legacy-api-versions
The Docker daemon provides a versioned API for backward compatibility with oldclients. Docker clients can perform API-version negotiation to select the mostrecent API version supported by the daemon (downgrading to and older version ofthe API when necessary). API version negotiation was introduced in Docker v1.12.0(API 1.24), and clients before that used a fixed API version.

Docker Engine versions through v25.0 provide support for all API versionsincluded in stable releases for a given platform. For Docker daemons on Linux,the earliest supported API version is 1.12 (corresponding with Docker Enginev1.0.0), whereas for Docker daemons on Windows, the earliest supported APIversion is 1.24 (corresponding with Docker Engine v1.12.0).

Support for legacy API versions (providing old API versions on current versionsof the Docker Engine) is primarily intended to provide compatibility with recent,but still supported versions of the client, which is a common scenario (the Dockerdaemon may be updated to the latest release, but not all clients may be up-to-dateor vice versa). Support for API versions before that (API versions provided byEOL versions of the Docker Daemon) is provided on a "best effort" basis.

Use of old API versions is rare, and support for legacy API versionsinvolves significant complexity (Docker 1.0.0 having been released 10 years ago).Because of this, we'll start deprecating support for legacy API versions.

Docker Engine v25.0 by default disables API version older than 1.24 (aligningthe minimum supported API version between Linux and Windows daemons). Whenconnecting with a client that uses an API version older than 1.24,the daemon returns an error. The following example configures the DockerCLI to use API version 1.23, which produces an error:


<span><span><span>DOCKER_API_VERSION=1.23 docker version<br></span></span></span><span><span><span>Error response from daemon: client version 1.23 is too old. Minimum supported API version is 1.24,<br></span></span></span><span><span><span>upgrade your client to a newer version<br></span></span></span>
Support for API versions lower than 1.24 has been permanently removed in DockerEngine v26, and the minimum supported API version will be incrementally raisedin releases following tha
 
In diesem Thread ist halt der Eindruck vermittelt worden, dass die Verwendung einer VM für Docker, alle Probleme verhindern würde. Darauf wollte ich hinweisen ... es kann immer etwas passieren.

Ich verwende für Docker eine VM, und das ändern der API-Version war in einer Minute vorbei.

Trotzdem wundert es mich dass Docker - einen der am häfigsten verwendeten Conainer - Portainer "abgeschossen" hat. Die wussten doch dass weder CE noch bezahl Version angepasst sind ....
 
Aber es gibt eben auch Usecases, wo VMs besser funktionieren oder sogar die einzige sinnvolle Option sind.
Da hab ich nie was gegen gesgagt, aber für mich liesst sich das gerade so, dass 2 Punkte unterwegs sind:

  1. Fehler mit Docker Container nach Linux update
  2. Du nutzt Docker nicht wies in der Doku steht, darum ist das was du tust "meh" :)
VMs und LXCs haben alle Ihren Einsatz-Zweck der nur bekannt und bewusst sein muss, jedes Tool hat in Fakten eine Pro und Contra Liste, der Rest sind Meinungen und Fakten sind mir wichtiger als Meinungen.

Again ich schrieb in meinem Text:
Nun, muss man dafür unbedingt Docker im LXC nutzen? Nein nicht umbedingt.
Ist es eine einfach Lösung um Dinge schnell zu Prototypen? Ja durch aus, nicht jeder schläft mit dem Ansible-Handbuch unter dem Kopfkissen

TL;DR Kontext ist Relevant

Und da wo du sagst, "Mir persönlich ist meine Lebenszeit für troubleshooting zu schade", sage ich respektiere ich vollkommen, sehe ich nicht gleich wie du. Aber bitte lasst es nicht so klingen, als sei Docker in VMs zu betreiben ohne den Kontext des Users zu kenne und zu verstehen das Goldene Mittel zum Erfolg. Wenn der User evtl. mit GPU und USB/PCIe Passthrough arbeitet, bist du schnell wieder bei ganz viel Troubleshooting und viel Lebenszeit weg. Again Kontext.

>Das ist doch gar nicht der Punkt. Ich finde es völlig legitim, docker in lxcs zu benutzen, wenn man sich der Problematik bewusst ist und den
>damit verbundenen Folgen (Ausfall von Diensten, troubleshooting etc) leben kann. Mein Eindruck ist aber, dass viele Leute das nicht tun, sondern
>weil sie in irgendeinen clickbait-Youtube-Tutorial, reddit-Homelabbing-Forum das so empfohlen bekommen haben.

eben. ganz genau. und damit sollte man nicht damit aufhören, das immer und immer wieder zu wiederholen, bis der letzte horst es begriffen hat.
Warum sind Leute die Tutorials gucken und Dinge lernen wollen, Horste? Darf nicht jeder seinen eigenen Pfad zum lernen und ausprobieren haben?
 
nein, wollt ich damit nicht sagen. nur sollte man sich halt nicht nur über solche selbsternannten youtube- oder read-my-tutorial-on-my-blog-profeten bilden sondern auch mal in die hersteller doku wälzen oder ins hersteller forum gucken.

ich finde das erschreckend, wie überzeugt heute gefährliches halbwissen oder gar falschwissen in die welt gespuckt wird und von allen seiten immer weniger hinterfragt wird, ob das denn auch wirklich qualitativ gut ist.

mich macht sowas wie das hier wütend, v.a. weil hier proxmox geblamed wird https://blog.ktz.me/proxmox-9-broke-my-docker-containers/

mache menschen sehen die welt nur aus ihrer eigenen brille

ich fänd das ja auch schick docker auf dem host oder in nem lxc laufen zu haben. aber es ist nunmal mit bösen fallstricken verbunden. und das sollte bitte nicht übersehen oder gar verschwiegen werden.
 
  • Like
Reactions: Johannes S