v2.16.0 — a recreated container keeps its GPU
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.