blob: dd6b86026ddcba8ee64133dd79106e56fd3ff7f8 [file] [log] [blame]
From fc9fea5b5b47686f9e841d4b7d0105e06960c112 Mon Sep 17 00:00:00 2001
From: Rayan Dasoriya <dasoriya@google.com>
Date: Tue, 20 Jul 2021 02:32:45 +0000
Subject: [PATCH] Added containerd support
---
toolbox | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/toolbox b/toolbox
index f101cf1..fcd2102 100755
--- a/toolbox
+++ b/toolbox
@@ -10,6 +10,8 @@ TOOLBOX_DIRECTORY="/var/lib/toolbox"
TOOLBOX_BIND="--bind=/:/media/root --bind=/usr:/media/root/usr --bind=/run:/media/root/run"
# Ex: "--setenv=KEY=VALUE"
TOOLBOX_ENV=""
+TOOLBOX_DOCKER_IMAGE_TARBALL=""
+TOOLBOX_TEMP_DIR=$(mktemp -d)
toolboxrc="${HOME}"/.toolboxrc
@@ -28,18 +30,27 @@ machinepath="${TOOLBOX_DIRECTORY}/${machinename}"
osrelease="${machinepath}/etc/os-release"
if [ ! -f ${osrelease} ] || systemctl is-failed -q ${machinename} ; then
sudo mkdir -p "${machinepath}"
+ sudo mkdir -p "${TOOLBOX_TEMP_DIR}"
sudo chown ${USER}: "${machinepath}"
- docker pull "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}"
- docker create --name=${machinename} "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}" /bin/true
- docker export ${machinename} | sudo tar -x -C "${machinepath}" -f -
- docker rm ${machinename}
+ if [ ! -z "${TOOLBOX_DOCKER_IMAGE_TARBALL}" ] ; then
+ sudo ctr image import "${TOOLBOX_DOCKER_IMAGE_TARBALL}"
+ else
+ sudo ctr image pull "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}"
+ fi
+ sudo ctr containers create "${TOOLBOX_DOCKER_IMAGE}:${TOOLBOX_DOCKER_TAG}" ${machinename} /bin/true
+ sudo ctr snapshot mounts "${TOOLBOX_TEMP_DIR}" ${machinename} | xargs sudo
+ sudo rsync -a "${TOOLBOX_TEMP_DIR}/" "${machinepath}"
+ sudo umount "${TOOLBOX_TEMP_DIR}"
+ sudo ctr container rm ${machinename}
+ sudo rm -rf "${TOOLBOX_TEMP_DIR}"
sudo touch ${osrelease}
fi
sudo systemd-nspawn \
--directory="${machinepath}" \
--capability=all \
+ --resolv-conf="replace-host" \
--share-system \
${TOOLBOX_BIND} \
${TOOLBOX_ENV} \
--
2.32.0.402.g57bb445576-goog