Debian 9 Stretch
Sponsored Link

Docker : Use Dockerfile2017/08/03

Use Dockerfile and create Docker images automatically.
It is also useful for configuration management.
[1] For example, Create a Dockerfile to install apache2 and sshd and also install Supervisor to control multiple services on a Container.
vi Dockerfile
# create new

FROM debian
MAINTAINER ServerWorld <>

RUN apt-get update; apt-get -y install ssh apache2 supervisor
RUN echo "Hello DockerFile World" > /var/www/html/index.html
RUN mkdir /root/.ssh; chown root. /root/.ssh; chmod 700 /root/.ssh
RUN ssh-keygen -A

ADD supervisord.conf /etc/supervisord.conf
ADD .ssh/ /root/.ssh/authorized_keys

EXPOSE 22 80
CMD ["/usr/bin/supervisord"]

# create a Supervisor template

vi supervisord.conf

command=/etc/init.d/ssh start

command=/etc/init.d/apache2 start

# generate SSH key

ssh-keygen -q -N "" -f /root/.ssh/id_rsa
# build image ⇒ docker build -t [image name]:[tag] .

docker build -t web_server:latest .

Sending build context to Docker daemon  27.65kB
Step 1/10 : FROM debian
 --->  a20fd0d59cf1
Step 2/10 : MAINTAINER ServerWorld <> 
 --->  Using cache
 --->  526dda9559bd
Successfully built 3c4e390e6c8e
Successfully tagged web_server:latest

docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
web_server              latest              3c4e390e6c8e        19 seconds ago      296MB   latest              8efc6944bf8d        2 days ago          219MB
debian                  latest              a20fd0d59cf1        10 days ago         100MB

# run Container on background

docker run -d -p 2022:22 -p 8081:80 web_server

docker ps

CONTAINER ID  IMAGE       COMMAND         CREATED   STATUS      PORTS                                      
17d282b0a8d9  web_server  "/usr/bin/su..  13 secon  Up 11 seco>22/tcp,>80/tcp..

# verify accesses

curl localhost:8081

Hello DockerFile World
ssh -p 2022 localhost

The format of Dockerfile is [INSTRUCTION arguments] .
Refer to the following description for INSTRUCTION.
FROM iIt sets the Base Image for subsequent instructions.
MAINTAINER It sets the Author field of the generated images.
RUN It will execute any commands when Docker image will be created.
CMD It will execute any commands when Docker container will be executed.
ENTRYPOINT It will execute any commands when Docker container will be executed.
LABEL It adds metadata to an image.
EXPOSE It informs Docker that the container will listen on the specified network ports at runtime.
ENV It sets the environment variable.
ADD It copies new files, directories or remote file URLs.
COPY It copies new files or directories.
The differences of [ADD] are that it's impossible to specify remore URL and also it will not extract archive files automatically.
VOLUME It creates a mount point with the specified name and marks it as holding externally mounted volumes from native host or other containers
USER It sets the user name or UID.
WORKDIR It sets the working directory.

Matched Content