64 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Snapshotters
 | |
| 
 | |
| Snapshotters manage the snapshots of the container filesystems.
 | |
| 
 | |
| The available snapshotters can be inspected by running `ctr plugins ls` or `nerdctl info`.
 | |
| 
 | |
| ## Core snapshotter plugins
 | |
| 
 | |
| Generic:
 | |
| - `overlayfs` (default): OverlayFS. This driver is akin to Docker/Moby's "overlay2" storage driver, but containerd's implementation is not called "overlay2".
 | |
| - `native`: Native file copying driver. Akin to Docker/Moby's "vfs" driver.
 | |
| 
 | |
| Block-based:
 | |
| - [`blockfile`](./blockfile.md): A driver using raw block files for each snapshot. Block files are copied from a parent or base empty block file. Mounting requires a virtual machine or support for loopback mounts.
 | |
| - `devmapper`: ext4/xfs device mapper. See [`devmapper.md`](./devmapper.md).
 | |
| 
 | |
| Filesystem-specific:
 | |
| - `btrfs`: btrfs. Needs the plugin root (`/var/lib/containerd/io.containerd.snapshotter.v1.btrfs`) to be mounted as btrfs.
 | |
| - `zfs`: ZFS. Needs the plugin root (`/var/lib/containerd/io.containerd.snapshotter.v1.zfs`) to be mounted as ZFS. See also https://github.com/containerd/zfs .
 | |
| 
 | |
| [Deprecated](https://github.com/containerd/containerd/blob/main/RELEASES.md#deprecated-features):
 | |
| - `aufs`: AUFS. Deprecated since containerd 1.5. Removed in containerd 2.0. See also https://github.com/containerd/aufs .
 | |
| 
 | |
| ## Non-core snapshotter plugins
 | |
| 
 | |
| - `fuse-overlayfs`: [FUSE-OverlayFS Snapshotter](https://github.com/containerd/fuse-overlayfs-snapshotter)
 | |
| - `nydus`: [Nydus Snapshotter](https://github.com/containerd/nydus-snapshotter)
 | |
| - `overlaybd`: [OverlayBD Snapshotter](https://github.com/containerd/accelerated-container-image)
 | |
| - `stargz`: [Stargz Snapshotter](https://github.com/containerd/stargz-snapshotter)
 | |
| 
 | |
| ## Mount target
 | |
| 
 | |
| Mounts can optionally specify a target to describe submounts in the container's
 | |
| rootfs. For example, if the snapshotter wishes to bind mount to a subdirectory
 | |
| ontop of an overlayfs mount, they can return the following mounts:
 | |
| 
 | |
| ```json
 | |
| [
 | |
|     {
 | |
|         "type": "overlay",
 | |
|         "source": "overlay",
 | |
|         "options": [
 | |
|             "workdir=...",
 | |
|             "upperdir=...",
 | |
|             "lowerdir=..."
 | |
|         ]
 | |
|     },
 | |
|     {
 | |
|         "type": "bind",
 | |
|         "source": "/path/on/host",
 | |
|         "target": "/path/inside/container",
 | |
|         "options": [
 | |
|             "ro",
 | |
|             "rbind"
 | |
|         ]
 | |
|     }
 | |
| ]
 | |
| ```
 | |
| 
 | |
| However, the mountpoint `/path/inside/container` needs to exist for the bind
 | |
| mount, so one of the previous mounts must be responsible for providing that
 | |
| directory in the rootfs. In this case, one of the lower dirs of the overlay has
 | |
| that directory to enable the bind mount.
 | 
