From 450b9218b932beef4248d0a3d48a92a3cf639847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Mon, 24 May 2021 00:11:58 +0300 Subject: [PATCH] add README --- README.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..d51c959 --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ +Undocker +-------- + +Convert a Docker image to a root file system. + +Why? +--- + +Docker images seems to be the lingua franca of distributing application +containers. It's hell convenient. But is it the best runtime environment? Not +for everyone. + +Undocker bridges the gap between image configurations and container runtimes: +now you can run a Docker image with systemd-nspawn and/or lxc. + +Usage -- extract docker image +----------------------------- + +Download `nginx` docker image from docker hub and convert it to a rootfs: +``` +skopeo copy docker://docker.io/nginx:latest docker-archive:nginx.tar +undocker rootfs nginx.tar - | tar -xv +``` + +Usage -- systemd-nspawn example +------------------------------- + +``` +systemd-nspawn -D $PWD nginx -g 'daemon off;' +``` + +Usage -- lxc example +-------------------- + +Converting and creating the archive: + +``` +undocker rootfs nginx.tar - | xz -T0 > nginx.tar.xz +undocker lxcconfig nginx.tar config +tar -cJf meta.tar.xz config +``` + +Importing it to lxc and running it: + +``` +lxc-create -n bb -t local -- -m meta.tar.xz -f nginx.tar.xz +lxc-start -F -n bb -s lxc.net.0.type=none +lxc-start -F -n bb -s lxc.net.0.type=none -- /docker-entrypoint.sh nginx -g "daemon off;" +``` + +Note: automatic entrypoint does not work well with parameters with spaces; not +sure what lxc expects here to make it work. + +Contributions +------------- + +These are the contributions I will accept: + +- pull requests for code. +- documentation updates. + +I am very unlikely to react to bug reports (even if they are legit) without +accopmanying pull requests.