Skip to content

v2.16.0 — a recreated container keeps its GPU

Choose a tag to compare

@amayer1983 amayer1983 released this 18 Aug 17:54
· 7 commits to main since this release

A recreated container keeps its GPU

An ollama deployed from a Portainer stack with a GPU failed every single update, forever, and the reason took v2.15.0's new "Health check said:" line to surface:

exit 1: /bin/sh: 1: nvidia-smi: not found

The chain: Docksentry's recreate dropped HostConfig.DeviceRequests → without it the NVIDIA runtime never injects nvidia-smi into the container → the healthcheck probes exactly that binary → unhealthy → rollback. The rollback was the only thing keeping that box off CPU inference, and the skip list's comment literally said "may add in a future release if requested".

Consider it requested.

All four shapes docker run --gpus produces now round-trip on recreate: all, a count, a device list, and extra capabilities. A device list is a quoted CSV field — the double quotes are part of the value, not shell quoting; Docker's own parser wants them. Two DeviceRequests entries have no CLI spelling at all, so that case deliberately emits nothing and the audit reports it — carrying half a GPU config silently would be this bug all over again.

Said plainly: this was built against Docker's documented shapes, because this development machine has no GPU. The ollama box is the live verification, and the rollback is the net if I got it wrong.

/audit no longer keeps the skip list to itself

There is a short list of inspect fields Docksentry knowingly does not carry on recreate. It was invisible — including to /audit, the command whose whole job is finding recreate gaps. DeviceRequests sat in that silence while the ollama failed every update.

A field that is set on the container and knowingly skipped now shows up in /audit under its own heading, on Telegram and Discord both. Unset fields stay quiet; the section is for what would actually be lost.