2013-12-06 18:26:57 -05:00
|
|
|
:title: Create a Base Image
|
2013-08-27 21:49:43 -04:00
|
|
|
:description: How to create base images
|
|
|
|
:keywords: Examples, Usage, base image, docker, documentation, examples
|
|
|
|
|
|
|
|
.. _base_image_creation:
|
|
|
|
|
2013-12-06 18:26:57 -05:00
|
|
|
Create a Base Image
|
2013-08-27 21:49:43 -04:00
|
|
|
===================
|
|
|
|
|
|
|
|
So you want to create your own :ref:`base_image_def`? Great!
|
|
|
|
|
|
|
|
The specific process will depend heavily on the Linux distribution you
|
|
|
|
want to package. We have some examples below, and you are encouraged
|
|
|
|
to submit pull requests to contribute new ones.
|
|
|
|
|
2014-02-19 22:49:15 -05:00
|
|
|
Create a full image using tar
|
|
|
|
.............................
|
2013-08-27 21:49:43 -04:00
|
|
|
|
|
|
|
In general, you'll want to start with a working machine that is
|
|
|
|
running the distribution you'd like to package as a base image, though
|
|
|
|
that is not required for some tools like Debian's `Debootstrap
|
|
|
|
<https://wiki.debian.org/Debootstrap>`_, which you can also use to
|
|
|
|
build Ubuntu images.
|
|
|
|
|
|
|
|
It can be as simple as this to create an Ubuntu base image::
|
|
|
|
|
|
|
|
$ sudo debootstrap raring raring > /dev/null
|
|
|
|
$ sudo tar -C raring -c . | sudo docker import - raring
|
|
|
|
a29c15f1bf7a
|
2013-09-28 09:54:34 -04:00
|
|
|
$ sudo docker run raring cat /etc/lsb-release
|
2013-08-27 21:49:43 -04:00
|
|
|
DISTRIB_ID=Ubuntu
|
|
|
|
DISTRIB_RELEASE=13.04
|
|
|
|
DISTRIB_CODENAME=raring
|
|
|
|
DISTRIB_DESCRIPTION="Ubuntu 13.04"
|
|
|
|
|
|
|
|
There are more example scripts for creating base images in the
|
2014-01-09 21:56:05 -05:00
|
|
|
Docker GitHub Repo:
|
2013-08-27 21:49:43 -04:00
|
|
|
|
|
|
|
* `BusyBox <https://github.com/dotcloud/docker/blob/master/contrib/mkimage-busybox.sh>`_
|
2014-01-17 08:46:11 -05:00
|
|
|
* CentOS / Scientific Linux CERN (SLC) `on Debian/Ubuntu
|
2013-10-23 13:22:41 -04:00
|
|
|
<https://github.com/dotcloud/docker/blob/master/contrib/mkimage-rinse.sh>`_
|
2014-01-17 08:46:11 -05:00
|
|
|
or
|
|
|
|
`on CentOS/RHEL/SLC/etc.
|
|
|
|
<https://github.com/dotcloud/docker/blob/master/contrib/mkimage-yum.sh>`_
|
2013-10-23 13:22:41 -04:00
|
|
|
* `Debian / Ubuntu
|
2013-10-15 04:26:10 -04:00
|
|
|
<https://github.com/dotcloud/docker/blob/master/contrib/mkimage-debootstrap.sh>`_
|
2014-02-19 22:49:15 -05:00
|
|
|
|
|
|
|
|
|
|
|
Creating a simple base image using ``scratch``
|
|
|
|
..............................................
|
|
|
|
|
|
|
|
There is a special repository in the Docker registry called ``scratch``, which
|
|
|
|
was created using an empty tar file::
|
|
|
|
|
|
|
|
$ tar cv --files-from /dev/null | docker import - scratch
|
|
|
|
|
|
|
|
which you can ``docker pull``. You can then use that image to base your new
|
|
|
|
minimal containers ``FROM``::
|
|
|
|
|
|
|
|
FROM scratch
|
|
|
|
ADD true-asm /true
|
|
|
|
CMD ["/true"]
|
|
|
|
|
|
|
|
The Dockerfile above is from extremely minimal image -
|
|
|
|
`tianon/true <https://github.com/tianon/dockerfiles/tree/master/true>`_.
|