Откуда берется исходная файловая система образа 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
папка, среди других.