Docker映像初始文件系统从哪里来?
我在https://github.com/pypa/manylinux查看manylinux1
股票图像构build脚本,特别是调用链:
-
.travis.yml
<...> script: - docker build --rm -t quay.io/pypa/manylinux1_$PLATFORM:$TRAVIS_COMMIT -f docker/Dockerfile-$PLATFORM docker/
-
docker/Dockerfile-<arch>
:COPY build_scripts /build_scripts RUN bash build_scripts/build.sh
-
docker/build_scripts/build.sh
:<a bunch of variables> sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/fastestmirror.conf <...>
该脚本假定已经存在基本的CentOS 5文件系统(例如/etc/yum
)。 它从何而来?
我没有看到任何关于股票图像的引用,或者从某处下载它或使用安装ISO的任何内容。 代码库中的任何地方都没有/etc
etc。
查看manylinux映像的Dockerfile,可以看到它基于centos:5.11
FROM centos:5.11 MAINTAINER The ManyLinux project ...
/etc/yum
文件夹已经是centos映像的一部分,可以通过运行来validation: docker run -it centos:5.11 ls /etc/yum
更新:
Docker镜像是在Dockerfile中定义的一个层结构中构build的。 通过在Dockerfile中使用FROM语法 ,图像彼此重叠。
在这种情况下,图像基于centos:5.11
图像。 语法在docker标签|处解释 Docker文档 (去图)。 在这种情况下,没有目录地址,这意味着它从默认的Docker Hubregistry中的centos
条目中检索,这个registry是5.11
标签 。
CentOS的Dockerfile非常简单。 它只是将基础CentOS文件结构的tar包扩展成一个scratch
(空)泊坞窗图像。 在最新版本的情况下,这个tarball, centos-7-docker.tar.xz
包含/etc/yum
文件夹等等。