Откуда берется исходная файловая система образа Docker?

Я смотрю на manylinux1 стандартные сценарии сборки изображений по адресу https://github.com/pypa/manylinux, в частности цепочка вызовов:

  • .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 ответ

Решение

Глядя на Dockerfile для образа manylinux, вы можете видеть, что он основан на 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. Изображения строятся друг на друге, используя синтаксис FROM внутри Dockerfile.

В этом случае изображение основано на centos:5.11 образ. Синтаксис объясняется в теге Docker | Докерская документация (см. Рисунок). В этом случае адрес каталога отсутствует, что означает, что он получен из centos запись в реестре Docker Hub по умолчанию, 5.11 тег.

Dockerfile для CentOS очень прост. Он просто расширяет архив с базовой файловой структурой CentOS в scratch (пустое) изображение докера. Этот тарболл, centos-7-docker.tar.xz в случае последней версии, содержит /etc/yum папка, среди других.

Другие вопросы по тегам