Docker image from existing directory tree, chroot or nspawn-container
There is a simple way of building a docker image from scratch using existing chroot or nspawn-container.
Here is what needs to be done:
1. Create a Dockerfile
It should add all the directories from the chroot/nspawn-container into the image. As a base for the Dockerfile use the scratch. Here are the contents of the Docker file:
FROM scratch ADD bin /bin ADD boot /boot ADD cgroup /cgroup ADD dev /dev ADD etc /etc ADD home /home ADD icons /icons ADD lib /lib ADD lib64 /lib64 ADD media /media ADD mnt /mnt ADD PackageVersion.txt /PackageVersion.txt ADD proc /proc ADD root /root ADD run /run ADD sbin /sbin ADD selinux /selinux ADD srv /srv ADD sys /sys ADD tmp /tmp ADD usr /usr ADD var /var
2. Keep in mind to change any permissions if needed by your image, since all the directories added as above will be owned by root.
RUN chown -R mysql:mysql /var/run/mysql
3. Build the image
cd /my/chroot/dir sudo docker build -t my_chroot_image ./
And YES, its that simple!