@@ -48,6 +48,7 @@ CONTAINERD_ROOTLESS_SH="containerd-rootless.sh"
48
48
SYSTEMD_CONTAINERD_UNIT=" containerd.service"
49
49
SYSTEMD_BUILDKIT_UNIT=" buildkit.service"
50
50
SYSTEMD_FUSE_OVERLAYFS_UNIT=" containerd-fuse-overlayfs.service"
51
+ SYSTEMD_STARGZ_UNIT=" stargz-snapshotter.service"
51
52
52
53
# global vars
53
54
ARG0=" $0 "
@@ -301,7 +302,7 @@ cmd_entrypoint_install_fuse_overlayfs() {
301
302
[Install]
302
303
WantedBy=default.target
303
304
EOT
304
- INFO " Add the following lines to \" ${XDG_CONFIG_HOME} /containerd/config.toml\" manually:"
305
+ INFO " Add the following lines to \" ${XDG_CONFIG_HOME} /containerd/config.toml\" manually, and then run \` systemctl --user restart ${SYSTEMD_CONTAINERD_UNIT} \` :"
305
306
cat << -EOT
306
307
### BEGIN ###
307
308
[proxy_plugins]
@@ -313,6 +314,50 @@ cmd_entrypoint_install_fuse_overlayfs() {
313
314
INFO " Set \` export CONTAINERD_SNAPSHOTTER=\" fuse-overlayfs\"\` to use the fuse-overlayfs snapshotter."
314
315
}
315
316
317
+ # CLI subcommand: "install-stargz"
318
+ cmd_entrypoint_install_stargz () {
319
+ init
320
+ if ! command -v " containerd-stargz-grpc" > /dev/null 2>&1 ; then
321
+ ERROR " containerd-stargz-grpc (https://github.com/containerd/stargz-snapshotter) needs to be present under \$ PATH"
322
+ exit 1
323
+ fi
324
+ if ! systemctl --user --no-pager status " ${SYSTEMD_CONTAINERD_UNIT} " > /dev/null 2>&1 ; then
325
+ ERROR " Install containerd first (\` $ARG0 install\` )"
326
+ exit 1
327
+ fi
328
+ if [ ! -f " ${XDG_CONFIG_HOME} /containerd-stargz-grpc/config.toml" ]; then
329
+ mkdir -p " ${XDG_CONFIG_HOME} /containerd-stargz-grpc"
330
+ touch " ${XDG_CONFIG_HOME} /containerd-stargz-grpc/config.toml"
331
+ fi
332
+ cat << -EOT | install_systemd_unit "${SYSTEMD_STARGZ_UNIT} "
333
+ [Unit]
334
+ Description=stargz snapshotter (Rootless)
335
+ PartOf=${SYSTEMD_CONTAINERD_UNIT}
336
+
337
+ [Service]
338
+ Environment=PATH=$BIN :/sbin:/usr/sbin:$PATH
339
+ ExecStart="$REALPATH0 " nsenter -- containerd-stargz-grpc -address "${XDG_RUNTIME_DIR} /containerd-stargz-grpc/containerd-stargz-grpc.sock" -root "${XDG_DATA_HOME} /containerd-stargz-grpc" -config "${XDG_CONFIG_HOME} /containerd-stargz-grpc/config.toml"
340
+ ExecReload=/bin/kill -s HUP \$ MAINPID
341
+ RestartSec=2
342
+ Restart=always
343
+ Type=simple
344
+ KillMode=mixed
345
+
346
+ [Install]
347
+ WantedBy=default.target
348
+ EOT
349
+ INFO " Add the following lines to \" ${XDG_CONFIG_HOME} /containerd/config.toml\" manually, and then run \` systemctl --user restart ${SYSTEMD_CONTAINERD_UNIT} \` :"
350
+ cat << -EOT
351
+ ### BEGIN ###
352
+ [proxy_plugins]
353
+ [proxy_plugins."stargz"]
354
+ type = "snapshot"
355
+ address = "${XDG_RUNTIME_DIR} /containerd-stargz-grpc/containerd-stargz-grpc.sock"
356
+ ### END ###
357
+ EOT
358
+ INFO " Set \` export CONTAINERD_SNAPSHOTTER=\" stargz\"\` to use the stargz snapshotter."
359
+ }
360
+
316
361
# CLI subcommand: "uninstall"
317
362
cmd_entrypoint_uninstall () {
318
363
init
@@ -340,6 +385,14 @@ cmd_entrypoint_uninstall_fuse_overlayfs() {
340
385
INFO " To remove data, run: \` $BIN /rootlesskit rm -rf ${XDG_DATA_HOME} /containerd-fuse-overlayfs"
341
386
}
342
387
388
+ # CLI subcommand: "uninstall-stargz"
389
+ cmd_entrypoint_uninstall_stargz () {
390
+ init
391
+ uninstall_systemd_unit " ${SYSTEMD_STARGZ_UNIT} "
392
+ INFO " This uninstallation tool does NOT remove data."
393
+ INFO " To remove data, run: \` $BIN /rootlesskit rm -rf ${XDG_DATA_HOME} /containerd-stargz-grpc"
394
+ }
395
+
343
396
# text for --help
344
397
usage () {
345
398
echo " Usage: ${ARG0} [OPTIONS] COMMAND"
@@ -359,6 +412,10 @@ usage() {
359
412
echo " Add-on commands (fuse-overlayfs):"
360
413
echo " install-fuse-overlayfs Install the systemd unit for fuse-overlayfs snapshotter"
361
414
echo " uninstall-fuse-overlayfs Uninstall the systemd unit for fuse-overlayfs snapshotter"
415
+ echo
416
+ echo " Add-on commands (stargz):"
417
+ echo " install-stargz Install the systemd unit for stargz snapshotter"
418
+ echo " uninstall-stargz Uninstall the systemd unit for stargz snapshotter"
362
419
}
363
420
364
421
# parse CLI args
0 commit comments