如何为Docker创建自己的基本映像?

Fli*_*imm 88 docker

根据Docker文档,要构建自己的映像,必须始终使用该FROM指令指定基本映像.

显然,在Docker索引中有很多图像可供选择,但如果我想构建自己的图像呢?那可能吗?

base如果我理解正确,图像是由Ubuntu构建的,我想试验一个Debian图像.另外,我想真正理解Docker base是如何工作的,而且图像对我来说仍然是一个黑盒子.


编辑: 有关创建基本映像的官方文档

cre*_*ack 34

您可以查看基本图像的创建方式并从那里开始.

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


Fli*_*imm 30

引用Solomon Hykes:

您可以使用"docker import"从任何tarball轻松创建新容器.例如:

debootstrap raring ./rootfs
tar -C ./rootfs -c . | docker import - flimm/mybase
Run Code Online (Sandbox Code Playgroud)


Lar*_*Cai 20

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

  1. 为文件系统创建tar文件,就是这样

    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
    
    Run Code Online (Sandbox Code Playgroud)
  2. tar文件转移到其他码头工人的系统,如果未在本地安装和import

    cat centos6-base.tar | docker import - centos6-base
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在您可以通过运行来验证.

    docker run -i -t centos6-base cat /etc/redhat-release
    
    Run Code Online (Sandbox Code Playgroud)

来自dotcloud脚本 将前两个步骤组合在一起,这让我感到困惑并且在开始时看起来很复杂.

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

你可以自己判断如何做第1步.


小智 13

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

使用临时"图像"信号到构建过程,您希望Dockerfile中的下一个命令成为图像中的第一个文件系统层.

FROM scratch
ADD hello /
CMD ["/hello"]
Run Code Online (Sandbox Code Playgroud)

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


Jes*_*lle 6

如果你想制作自己的基本图像,我首先要看一下 官方图像,特别是stackbrew在那个回购中.

否则,对于docker repo本身中的最小OS映像有一些很好的参考.

例如,这里有一个用于制作最小拱形图像的脚本,这里还有更多.