Skip to content

Instantly share code, notes, and snippets.

@mopemope
Last active October 29, 2016 16:53
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mopemope/79476588ed3650bc08d4 to your computer and use it in GitHub Desktop.
Save mopemope/79476588ed3650bc08d4 to your computer and use it in GitHub Desktop.
nspawn-container
#!/bin/bash
TOOLBOX_DOCKER_IMAGE=$1
TOOLBOX_USER=root
machinename=$(echo "${USER}-${TOOLBOX_DOCKER_IMAGE}" | sed -r 's/[^a-zA-Z0-9_.-]/_/g')
machinepath="/var/lib/toolbox/${machinename}"
if [ ! -d ${machinepath} ] || systemctl is-failed ${machinename} ; then
sudo mkdir -p "${machinepath}"
sudo chown ${USER}: "${machinepath}"
docker pull "${TOOLBOX_DOCKER_IMAGE}"
docker run --entrypoint="/bin/bash" --name=${machinename} "${TOOLBOX_DOCKER_IMAGE}" /bin/true
docker export ${machinename} | sudo tar -x -C "${machinepath}" -f -
docker rm ${machinename}
sudo touch "${machinepath}"/etc/os-release
fi
sudo systemd-nspawn -D "${machinepath}" --share-system --bind=/:/media/root --bind=/usr:/media/root/usr --bind-ro=/sys/fs/cgroup:/sys/fs/cgroup --bind-ro=/sys/fs/cgroup/memory:/sys/fs/cgroup/memory --bind-ro=/sys/fs/cgroup/cpuacct:/sys/fs/cgroup/cpuacct --bind=/run:/run --user="${TOOLBOX_USER}" "$2" "${@:3:$#}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment