可不可以通过一个ISO的系统镜像来制作一个Docker的基础镜像?

已邀请:

xqzhou - 码男

赞同来自:


可以参考下GitHub上的CentOS的Docker image项目,它就是从ISO直接做的image。

shlallen - DaoCloud软件工程师,合伙人

赞同来自:


当然是可以的。

对于Docker镜像的使用而言,一个repo中含有tag的镜像,其实是有很多的祖先镜像,每一个祖先镜像都是一层layer,这层layer可以包含具体的文件系统内容,也可以为空。最后容器的文件系统是这么多的layer,union mount的结果。

既然layer可以为空,那么Docker官方为了便于Docker爱好者制作base镜像,提供了一个scratch镜像,这个镜像就是一个空的layer。在您的Dockerfile文件中,可以把这个空的镜像作为你的base image,并且ADD您的iso文件,最后再在RUN命令中解压iso文件,这样build出来的镜像就是你所需要的镜像,可以作为其他镜像的base image。

可能有些人认为base image永远是镜像layer中的最底层,其实这样的理解有些片面,应该base image很大程度上也是Dockerfile build出来的,这个Dockerfile也会有base image。

希望回复对您有帮助。

您也可以参考Docker官方的链接:
http://docs.docker.com/articles/baseimages/

tifayuki - Tutum 工程师

赞同来自:


如果你的helloword是静态编译的,并且有可执行权限,那么打包的方法就是:

FROM scratch
ADD helloworld /helloworld
CMD

同理,你可以自己把相关需要的文件系统, 比如/usr, /home等等自己加入scratch, 从而实现自己的base image.
看看这个例子,你就明白了
https://github.com/microbox/re ... .8.17

hello_misu - 一句话介绍

赞同来自:


请问下,这个问题你搞定了没有??+

要回复问题请先登录注册