Docker non supporta direttamente questo, ma è possibile utilizzare DockerMake (Full Disclosure: ho scritto) per gestire questa sorta di "eredità". Usa un file YAML per impostare i singoli pezzi dell'immagine, quindi guida la generazione generando i Dockerfile appropriati.
Ecco come si dovrebbe costruire questo esempio un po 'più complicato:
--> genericA --
/ \
debian:jessie --> customBase ---> specificAB
\ /
--> genericB --
si può usare questa DockerMake.yml
di file:
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
Dopo aver installato lo strumento docker-make
CLI (pip install dockermake
), si può quindi costruire l'immagine specificAB
solo eseguendo
docker-make specificAB
fonte
2015-12-08 05:48:18
Grazie per la tua risposta. Dal momento che sono molto nuovo in Docker (l'ho installato 3 ore fa ;-) una rapida domanda di follow-up: Perché ho bisogno di Dockerfiles? Non posso semplicemente creare un, non so come sia chiamato in "Docker-terms", snapshot (?) Del contenitore Java e quindi installare manualmente MySQL (con apt-get, ecc.) In esso? – Frizz
È possibile farlo con "committente docker". Il problema è che non è ripetibile, quindi se vuoi cambiare qualcosa devi ricominciare da capo. I Dockerfiles sono sicuramente la strada da percorrere. –