Manually creating Docker images
Docker is a virtualization solution that's been gaining a lot of momentum over the last few years. It focuses on light-weight, ephemeral containers that can be created based on simple config files.
Docker's main target platform is amd64, but it also works on x86. However, practically all official container images in the Docker registry are amd64 based, which means they can't be used on an x86 machine. So, it's necessary to manually create the required base images. As you might have guessed, my server runs Docker on x86, so I've had to find a solution for that problem.
Fortunately, creating images from scratch is really easy with the mkimage.sh
script that comes bundled with Docker. On Debian systems, its installed in
/usr/share/docker.io/contrib/mkimage.sh
, on Fedora it has to be
obtained from the Docker git repository:
$ git clone https://github.com/docker/docker.git
The script can then be found under docker/contrib/mkimage.sh
.
Creating a Debian Jessie image is straight-forward:
# mkimage.sh -t debootstrap/minbase debootstrap --variant=minbase jessie
This command will create a minimal Debian Jessie image using Debootstrap,
and import it into Docker with the name debootstrap/minbase
. Further options
can set a specific Debian mirror server and a list of additional packages to
install:
# mkimage.sh -t debootstrap/minbase debootstrap \
--include=locales --variant=minbase \
jessie http://httpredir.debian.org/debian
This will use
httpredir.debian.org
as mirror and install the locales
package in the image.
mkimage.sh
has backends to bootstrap Arch Linux, Busybox, Centos, Mageia, and
Ubuntu. Fedora images doesn't seem to be supported directly, but they can be
generated by following
instructions
compiled by James Labocki.
Finally, it's worth mentioning that this should only be used to generate base images. You'd then use Docker itself (cf. Dockerfile) to create images that actually do something interesting, based on these base images. This will save both time and memory, due to Docker's caching and copy-on-write mechanisms.
Comments