我如何为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/获取信息,这更好地解释;
-
为你的文件系统创buildtar文件,简直就是这样
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
-
如果不是本地安装的话,将tar文件传输到其他docker系统并
import
它cat centos6-base.tar | docker import - centos6-base
-
现在你可以通过运行来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回购本身中,对于最小的操作系统映像有一些很好的参考。
例如,这里是一个制作最小拱形图像的脚本 ,这里有更多。