1

我正在查看https://github.com/pypa/manylinuxmanylinux1上的库存图像构建脚本,特别是调用链:

  • .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任何地方。

4

1 回答 1

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 语法,镜像构建在彼此之上。

在这种情况下,图像是基于centos:5.11图像的。语法在docker tag |中解释。Docker 文档(看图)。在这种情况下,没有目录地址,这意味着它是从默认Docker Hub 注册表中的centos条目中检索到的,即带有标签的条目。5.11

CentOS的Dockerfile非常简单。它只是将具有基本 CentOS 文件结构的 tarball 扩展为scratch(空)docker 映像。centos-7-docker.tar.xz在最新版本的情况下,此 tarball包含/etc/yum文件夹等。

于 2017-12-22T10:22:25.670 回答