Docker pushes through the containerd image store to a slow registry
CommonDocker 29.7 or later with the containerd image store (the default on fresh installs and in docker:dind) waits only 30 seconds for the registry's answer to the final upload request of each layer.
Confirm
docker version --format '{{.Server.Version}}'
docker info --format '{{.DriverStatus}}'29.7 or later and driver-type io.containerd.snapshotter.v1
Fix
- Push from the classic image store: set
"features": {"containerd-snapshotter": false}in /etc/docker/daemon.json and restart Docker, or start a dind service with--feature=containerd-snapshotter=false. Images in the other store are hidden until you switch back, so rebuild or pull what the job needs. - Make layers smaller, so each one is finalised within 30 seconds: split large files across layers, and keep data out of images.
- Ask the registry owner whether blobs can be finalised or scanned asynchronously, so the upload is answered before the work finishes.
{
"features": {
"containerd-snapshotter": false
}
}In /etc/docker/daemon.json, then restart Docker. Hides images stored in the containerd store until switched back.