Docker镜像初始文件系统来自哪里?

时间:2017-12-22 09:41:28

标签: docker docker-build python-manylinux

我正在https://github.com/pypa/manylinux查看manylinux1库存图片构建脚本,特别是调用链:

  • .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

1 个答案:

答案 0 :(得分:4)

查看manylinux图片的Dockerfile,您可以看到它基于centos:5.11

FROM centos:5.11
MAINTAINER The ManyLinux project
...

/etc/yum文件夹已经是centos图片的一部分,可以通过运行来验证:docker run -it centos:5.11 ls /etc/yum

<强>更新

Docker镜像是在Dockerfile中定义的层结构中构建的。通过使用Dockerfile中的FROM syntax,图像构建在彼此之上。

在这种情况下,图像基于centos:5.11图像。语法在docker tag | Docker Documentation解释(参见图)。在这种情况下,没有目录地址,这意味着它是从默认centos entry Docker Hub registry中的5.11 tag检索到的,Dockerfile

CentOS的you should never ever "decorate" them非常简单。它只是将基本CentOS文件结构的tarball扩展为scratch(空)docker镜像。对于最新版本,此tarball centos-7-docker.tar.xz包含/etc/yum文件夹等。