根据Docker documentation,要构建自己的图像,必须始终使用FROM
指令指定基本图像。
显然,在the Docker index中有很多可供选择的图像,但是如果我想建立自己的图像呢?这可能吗?
如果我理解正确的话,图片base
是建立在Ubuntu之上的,我想试验Debian图像。另外,我想真正了解Docker的工作原理,base
图片对我来说仍然是一个黑盒子。
答案 0 :(得分:33)
您可以查看基本图像的创建方式并从那里开始。
您可以在此处找到它们:https://github.com/dotcloud/docker/tree/master/contrib。 有mkimage-busybox.sh,mkimage-unittest.sh,mkimage-debian.sh
答案 1 :(得分:30)
您可以使用“docker import”从任何tarball轻松创建新容器。例如:
debootstrap raring ./rootfs tar -C ./rootfs -c . | docker import - flimm/mybase
答案 2 :(得分:20)
(感谢fatherlinux)从http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/获取信息,更好地解释
为您的文件系统创建tar文件,只需
即可tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
如果没有在本地安装,请将tar文件传输到其他docker系统,并import
cat centos6-base.tar | docker import - centos6-base
现在您可以通过运行来验证。
docker run -i -t centos6-base cat /etc/redhat-release
scripts from dotcloud将前两个步骤结合在一起,这让我感到困惑,并且在开始时看起来很复杂。
使用debootstrap
的docker official guideline也尝试制作干净的文件系统。
您可以自己判断如何执行第1步。
答案 3 :(得分:12)
要从头开始构建您自己的图片,您可以使用scratch
图片。
使用临时“图像”信号指向构建过程,您希望Dockerfile中的下一个命令成为图像中的第一个文件系统层。
FROM scratch
ADD hello /
CMD ["/hello"]
http://docs.docker.com/engine/articles/baseimages/#creating-a-simple-base-image-using-scratch
答案 4 :(得分:6)
如果你想制作自己的基本图像,我首先来看看
Official Images,特别是该回购邮箱内的stackbrew
。
否则docker repo本身对于最小的OS图像有一些很好的参考。