Werk #20183: Fix missing Docker piggyback data on Python 3.14 agent hosts
| Component | Checks & agents | ||||
| Title | Fix missing Docker piggyback data on Python 3.14 agent hosts | ||||
| Date | Jul 5, 2026 | ||||
| Level | Prominent Change | ||||
| Class | Bug Fix | ||||
| Compatibility | Compatible - no manual interaction needed | ||||
| Checkmk versions & editions |
|
On agent hosts running Python 3.14, the mk_docker.py plugin stopped creating piggyback hosts for individual Docker containers. Node-level Docker information (like the list of images or the node's overall disk usage) kept showing up as usual, but no container-level sections - and therefore no piggyback hosts - were produced anymore.
Additionally, if a specific container can no longer be reached at all (for example, because it was removed while the plugin was running), its piggyback host now shows a clear error message instead of silently receiving no data at all.
Technical background
Python 3.14 changed the default method the multiprocessing module uses to start subprocesses on Linux from "fork" to "forkserver". The plugin uses multiprocessing to collect data for all containers on a node in parallel, and used to pass the already-connected Docker client object into each subprocess. Under "forkserver", all arguments passed to a subprocess have to be serializable (picklable) first - the Docker client isn't, so starting the container subprocesses failed and crashed the plugin before any container data could be written.
The plugin has been changed so that each subprocess opens its own connection to the Docker daemon for the one container it's responsible for, instead of reusing the parent process's connection. This makes the plugin correct under any subprocess start method. Subprocesses are additionally started explicitly via "fork", which keeps the internal coordination of concurrent output writes between them simple and easy to reason about.