Docker напрямую не поддерживает это, но вы можете использовать DockerMake (полное раскрытие: я написал) для управления такого рода «наследство». Он использует файл YAML для настройки отдельных фрагментов изображения, а затем ведет сборку, создавая соответствующие файлы Docker.
Вот как бы вы построить этот немного более сложный пример:
--> genericA --
/ \
debian:jessie --> customBase ---> specificAB
\ /
--> genericB --
Вы бы использовать этот DockerMake.yml
файл:
specificAB:
requires:
- genericA
- genericB
genericA:
requires:
- customBase
build_directory: [some local directory]
build: |
#Dockerfile commands go here, such as
ADD installA.sh
RUN ./installA.sh
genericB:
requires:
- customBase
build: |
#Here are some other commands you could run
RUN apt-get install -y genericB
ENV PATH=$PATH:something
customBase:
FROM: debian:jessie
build: |
RUN apt-get update && apt-get install -y buildessentials
После установки docker-make
CLI инструмент (pip install dockermake
), вы можете построить specificAB
image only by running
docker-make specificAB
Спасибо за ваш ответ. Поскольку я очень новичок в Docker (я установил его 3 часа назад ;-) быстрый вопрос: зачем мне Dockerfiles? Могу ли я просто создать, не уверен, как он называется в терминах «Докер», моментальный снимок (?) Контейнера Java, а затем вручную установить MySQL (с apt-get и т. Д.) В нем? – Frizz
Вы можете сделать это с помощью «фиксации докеров». Проблема в том, что она не повторяется, поэтому, если вы хотите что-то изменить, вам нужно снова начать с нуля. Докерфилы, безусловно, путь. –