我如何为Docker创build自己的基础映像?

根据Docker文档 ,要构build自己的图像,必须始终使用FROM指令指定基本图像。

显然,在Docker索引中有很多图片可供select,但是如果我想构build自己的图片呢? 那可能吗?

如果我理解正确,图像base是由Ubuntu构build的,我想用Debian图像进行实验。 另外,我想真正了解Docker是如何工作的,而base映像对我来说仍然是一个黑盒子。

你可以看看如何创build基础图像,并从那里去。

你可以在这里find它们: https : //github.com/dotcloud/docker/tree/master/contrib 。 有mkimage-busybox.sh,mkimage-unittest.sh,mkimage-debian.sh

引用Solomon Hykes :

您可以使用“docker import”从任何tarball轻松创build一个新的容器。 例如:

 debootstrap raring ./rootfs tar -C ./rootfs -c . | docker import - flimm/mybase 

(贷给fatherlinux)从http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/获取信息,这更好地解释;

  1. 为你的文件系统创buildtar文件,简直就是这样

     tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar / 
  2. 如果不是本地安装的话,将tar文件传输到其他docker系统并import

     cat centos6-base.tar | docker import - centos6-base 
  3. 现在你可以通过运行来validation。

     docker run -i -t centos6-base cat /etc/redhat-release 

来自dotcloud的脚本将前两个步骤结合在一起,使我感到困惑,看起来很复杂。

Docker 官方指南使用debootstrap也试图制作干净的文件系统。

你可以自己判断如何做第一步。

要从头开始构build自己的图像,可以使用scratch图像。

使用暂存的“映像”信号到构build过程,您希望Dockerfile中的下一个命令成为映像中的第一个文件系统层。

 FROM scratch ADD hello / CMD ["/hello"] 

http://docs.docker.com/engine/articles/baseimages/#creating-a-simple-base-image-using-scratch

如果你想制作自己的基本图像,我首先要看看官方图片 ,特别stackbrew在回购里面的stackbrew

否则,在Docker回购本身中,对于最小的操作系统映像有一些很好的参考。

例如,这里是一个制作最小拱形图像的脚本 ,这里有更多。