Docker: Combine multiple images
docker, java, linux, mysql
Solution
Docker doesn't directly support this, but you can use DockerMake (full disclosure: I wrote it) to manage this sort of "inheritance". It uses a YAML file to set up the individual pieces of the image, then drives the build by generating the appropriate Dockerfiles.
Here's how you would build this slightly more complicated example:
--> genericA --
/ \
debian:jessie --> customBase ---> specificAB
\ /
--> genericB --
You would use this `DockerMake.yml` 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
After installing the `docker-make` CLI tool (`pip install dockermake`), you can then build the `specificAB` image just by running
docker-make specificAB
Problem
Is it possible with Docker to combine two images into one? Like this here: ``` genericA -- \ ---> specificAB / genericB -- ``` For example there's an image for Java and an image for MySQL. I'd like to have an image with Java and MySQL.