Description
Update: Confirmed this is a regression in 2.2.0.
ctr images mount fails with a bind mount error in containerd 2.2.0. The mount-manager bolt plugin creates a temporary directory path but the directory doesn't exist when the subsequent bind mount is attempted, causing the mount to fail with "no such device" or "no such file or directory".
Downgrading to containerd 2.1.4-1 resolves the issue, ctr images mount --rw works correctly.
Steps to reproduce the issue
- Pull an image:
ctr images pull ghcr.io/open-webui/open-webui:v0.6.36
- Attempt to mount:
ctr images mount --rw ghcr.io/open-webui/open-webui:v0.6.36 /tmp/test-mount
- Mount fails with bind mount error
Describe the results you received and expected
Expected: Image rootfs mounted at target path
Actual:
sha256:a54b2706f74fbd9e46c95ec355c222ad19058e0e78f8dbad93fca2ad8992b9ec
ctr: failed to mount [{bind /run/containerd/io.containerd.mount-manager.v1.bolt/t/1/1 []}]: mount source:
"/run/containerd/io.containerd.mount-manager.v1.bolt/t/1/1", target: "/tmp/test-mount", fstype: bind, flags: 0, data: "", err: no such device
The mount-manager temporary directory /run/containerd/io.containerd.mount-manager.v1.bolt/t/N/1 is empty after the failure - the overlay mount that should populate it never succeeds.
The same error occurs without --rw flag.
What version of containerd are you using?
containerd github.com/containerd/containerd/v2 v2.2.0 1c4457e.m
Any other relevant information
Any other relevant information:
$ uname -a
Linux p4 6.17.8-arch1-1 #1 SMP PREEMPT_DYNAMIC x86_64 GNU/Linux
$ df -T /var/lib/containerd
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/dm-39 btrfs 4206862336 3123983688 869689128 79% /var/lib/containerd
$ ls -la /run/containerd/io.containerd.mount-manager.v1.bolt/t/
total 0
drwx------ 2 root root 40 .
drwx------ 3 root root 80 ..
Using ctr snapshot prepare + ctr snapshot mounts works correctly with the btrfs snapshotter, the issue is specifically in the mount-manager bolt plugin's handling of the temporary overlay/bind mount.
Show configuration if it is related to CRI plugin.
Using default configuration (no /etc/containerd/config.toml).
Also tested with explicit btrfs snapshotter config:
version = 3
[plugins.'io.containerd.cri.v1.images']
snapshotter = 'btrfs'
[plugins.'io.containerd.transfer.v1.local']
[[plugins.'io.containerd.transfer.v1.local'.unpack_config]]
platform = 'linux/amd64'
snapshotter = 'btrfs'
Same error occurs with both configurations.
Description
Update: Confirmed this is a regression in 2.2.0.
ctr images mount fails with a bind mount error in containerd 2.2.0. The mount-manager bolt plugin creates a temporary directory path but the directory doesn't exist when the subsequent bind mount is attempted, causing the mount to fail with "no such device" or "no such file or directory".
Downgrading to containerd 2.1.4-1 resolves the issue, ctr images mount --rw works correctly.
Steps to reproduce the issue
ctr images pull ghcr.io/open-webui/open-webui:v0.6.36ctr images mount --rw ghcr.io/open-webui/open-webui:v0.6.36 /tmp/test-mountDescribe the results you received and expected
Expected: Image rootfs mounted at target path
Actual:
The mount-manager temporary directory /run/containerd/io.containerd.mount-manager.v1.bolt/t/N/1 is empty after the failure - the overlay mount that should populate it never succeeds.
The same error occurs without --rw flag.
What version of containerd are you using?
containerd github.com/containerd/containerd/v2 v2.2.0 1c4457e.m
Any other relevant information
Any other relevant information:
Using ctr snapshot prepare + ctr snapshot mounts works correctly with the btrfs snapshotter, the issue is specifically in the mount-manager bolt plugin's handling of the temporary overlay/bind mount.
Show configuration if it is related to CRI plugin.
Using default configuration (no /etc/containerd/config.toml).
Also tested with explicit btrfs snapshotter config:
Same error occurs with both configurations.