Docker : Use Dockerfile2019/01/22 |
Use Dockerfile and create Docker images automatically.
It is also useful for configuration management. |
|
[1] | For example, Create a Dockerfile to install httpd and sshd and also install Supervisor to control multiple services on a Container. |
dlp:~ #
vi Dockerfile # create new FROM fedora MAINTAINER ServerWorld <admin@srv.world> RUN dnf -y install openssh-server httpd 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/id_rsa.pub /root/.ssh/authorized_keys EXPOSE 22 80 CMD ["/usr/bin/supervisord"] [supervisord] nodaemon=true [program:sshd] command=/usr/sbin/sshd -D autostart=true autorestart=true [program:httpd] command=/usr/sbin/httpd -D FOREGROUND autostart=true autorestart=true # generate SSH key dlp:~ # ssh-keygen -q -N "" -f /root/.ssh/id_rsa
# build image ⇒ docker build -t [image name]:[tag] . dlp:~ # docker build -t web_server:latest . Sending build context to Docker daemon 15.87 kB Step 1/10 : FROM fedora ---> 26ffec5b4a8a Step 2/10 : MAINTAINER ServerWorld <admin@srv.world> ---> Running in 4701e055a121 ---> f366bb5fd2ba Removing intermediate container f82198c58db8 Step 3/10 : RUN dnf -y install openssh-server httpd supervisor ---> Running in 1b27371bf4c2 ..... ..... Successfully built 3fc464a24f9a Successfully tagged web_server:latestdlp:~ # docker images REPOSITORY TAG IMAGE ID CREATED SIZE web_server latest 3fc464a24f9a 3 minutes ago 549MB srv.world/fedora_httpd latest 5b6251fe21ea 10 minutes ago 499MB fedora latest 26ffec5b4a8a 5 days ago 274MB # run Container on background dlp:~ # docker run -d -p 2022:22 -p 8081:80 web_server ad51a5c4d0f7db8c1a4669da162410e18f7bf07f891c54f5057cbdd9c0383144dlp:~ # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ad51a5c4d0f7 web_server "/usr/bin/supervisord" 16 seconds ago Up 15 seconds 0.0.0.0:2022->22/tcp, 0.0.0.0:8081->80/tcp elastic_davinci # verify accesses dlp:~ # curl localhost:8081 Hello DockerFile World dlp:~ # ssh -p 2022 localhost [root@ad51a5c4d0f7 ~]# |
The format of Dockerfile is [INSTRUCTION arguments] . Refer to the following description for INSTRUCTION.
|
Sponsored Link |