Вы можете создать так называемый «базовый образ» и отправить его в реестр докеров. Затем для двух ветвей этого изображения вы используете ключевое слово FROM
. Но вместо использования базового изображения, например FROM ubuntu:latest
, вы используете базовое изображение:
Чтобы использовать базовое изображение:
FROM repo/base-image:tag
Итак, ваша база может быть:
FROM ubuntu:14.04
# Step 1
COPY /tmp /tmp
# Step 2
ADD /src /src
Вы строите и толкаете это:
docker build -t repo/base-image .
docker push repo/base-image
Затем в двух других ваших файлах Docker ...
Dockerfile1
FROM repo/base-image:tag
# Step 3 specific to this Dockerfile1
ADD /something /somewhere
# Do different things
EXPOSE 443
Dockerfile2
FROM repo/base-image:tag
# Step 3 specific to this Dockerfile2
ADD /something-else /somewhere-else
# Do different things
EXPOSE 80
Таким образом, они имеют первые 2 общих слоя и отличаются только третьим слоем. Строки в файлах Docker называются слоями. Вроде как пересекать дерево. Чем больше линий, тем больше слоев / уровней. Но, основываясь на строке FROM repo/img:tag
, она говорит вам, откуда наследовать ВСЕ предыдущие слои.