#!/bin/sh set -e # arguments are image name # This script will output a tarball, suitable to be turned into a cpio archive # This is a bit hacky, should be improved later, as it hardcodes config. IMAGE="$1"; shift cd /tmp # extract rootfs EXCLUDE="--exclude .dockerenv --exclude Dockerfile \ --exclude dev/console --exclude dev/pts --exclude dev/shm \ --exclude etc/hostname --exclude etc/hosts --exclude etc/mtab --exclude etc/resolv.conf" CONTAINER="$(docker create $IMAGE /dev/null)" docker export "$CONTAINER" | tar -xf - $EXCLUDE docker rm "$CONTAINER" > /dev/null # these three files are bind mounted in by docker so they are not what we want mkdir -p etc cat << EOF > etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters EOF cat << EOF > etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844 EOF printf 'linuxkit' > etc/hostname ln -s /proc/mounts etc/mtab tar cf - .