Docker - Extending a container with another image?

1.2k views Asked by At

At my company, we have hardened containers created by the security team, and I would like to extend the hardened container with another docker image. For example, if we have a hardened Debian container, and I want to add Apache, how do I do this?

I understand I can use FROM to use a base, but the examples I've seen, don't add another level of published images to an existing base, but specific commands. Do I just go to the official Dockerhub Apache (HTTP) image and just copy and paste the commands from the github repo? I'm assuming there's a cleaner way (but not sure if there is).

For example, do I

FROM mycompanyprivaterepo/Debian:latest
//some command?
FROM httpd
docker build -t mynewimagewithapache

UPDATE: After attempting via apt-get apache2 per some comments, it kept hanging on interactive questions, Solved with the help of comments using: My Dockerfile:

FROM myprivaterepo/hardened-ubuntu
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get -qq install apache2

and building via:

$ docker build -t hardened-ubuntu-apache
1

There are 1 answers

2
mipo256 On

Well, as far as I understood, you cannot use multi-stage builds and just

COPY --from=base-image /path/to/file/you-are-interested-in /path/inside/new-stage-image

in order to copy the required data to your preferred image. If this is the case, then you have to create your own Dockerfile with base image as your company mycompanyprivaterepo/Debian:latest, and then just create some layers on top of it in order to install required software, using RUN.