Docker Engine 29's default image store lets --storage-opt size fail silently
Docker Engine 29 switches new installs from the classic overlay2 graphdriver to the containerd snapshotter as the default image store. I wanted to know what actually changes when that flag flips, so I ran the same host, the same images, and the same flags against both backends and compared what came out. The interesting result wasn't a speed number, although I got one of those too. It was a…
Docker Engine 29 has changed the default image store from classic overlay2 graphdriver to the containerd snapshotter. When this switch occurs, several changes happen that were not apparent at first glance.
One significant issue is that the container disk quota, which is set through the --storage-opt size= flag, no longer functions correctly under the new default. The flag stops erroring, but it also stops working altogether. This limit, which is supposed to cap a container's writable layer, only works with overlay2 over XFS with the pquota mount option. However, in the default containerd snapshotter setup, the filesystem doesn't have this capability.
Another observation is that pulls are genuinely faster with the new default. For example, pulling the node:22 image from a clean state, alternating between backends, shows an average runtime of 18.0 seconds with the containerd snapshotter compared to 28.5 seconds with the overlay2 graphdriver. This represents roughly a 37% improvement in speed.
Lastly, the mount type --mount type=image, although marked as experimental, behaves as expected in Docker 29. It refuses to write read-only files and fails cleanly on bad source images or missing target fields. This is a stark contrast to the previous behavior where the quota flag didn't enforce the limit.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.