์ด๋ฒ ํฌ์คํ ์์๋ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ค ํ๋์ธ DockerFile์ ๋ํด์ ๋ค๋ฃจ์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!!!
์์ํ๊ธฐ์ ์, ๋์ปคํ์ผ์ด๋ ๋ญ๊น์? docs.docker.com/engine/reference/builder/
๊ฐ๋จํ๊ฒ "๋ ์ํผ"๋ผ๊ณ ๋ณผ์ ์์ต๋๋ค.
์๋ฆฌ๋ฅผ ๋ง๋ค๋ ์ด๋ป๊ฒ ๋ง๋ค์ด์ผ ๋ง์๋์ง ๋ ์ํผ๋ฅผ ์ ๋ฆฌํ์ฌ ์ ์๋ ๋ฐฉ์๋๋ก ์๋ฆฌ๋ฅผ ํ๋ฏ,
์ปจํ
์ด๋๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋์ปคํ์ผ์ ์ด์ฉํ์ฌ ์ด๋ป๊ฒ ๋ง๋ค๊ฒ์ธ์ง์ ๋ํด ์ ์ํฉ๋๋ค.
๋์ปคํ์ผ์ ์ฌ์ฉํ๋ฉด ํจํค์ง์ค์น, ํ๊ฒฝ๋ณ์ ๋ณ๊ฒฝ, ์ค์ ํ์ผ ๋ณ๊ฒฝ๋ฑ ๋ค์ํ ์์ ์ ํ๋ํ๋ ์ปจํ ์ด๋ ๋ง๋ค๊ณ ์ค์ ์ ์ ์ฉํ๊ณ ์ด๋ ๊ฒ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํ ํ์ ์์ด, Dockerfile์ ์ด์ฉํ์ฌ ์ ์ํ ์ ์์ต๋๋ค.
์ด์ ๋ถํฐ, ๋์ปคํ์ผ์ ๊ฐ๋จํ๊ฒ ํ์ฉํ์ฌ ์ค์ตํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Docker File ์์ (apache Web)
1. Dockerfile ์์ฑ
์ด๋ฒ์๋ ์๋ก์ด ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ๊ทธ ๊ฒฝ๋ก์์ ์งํํ๊ฒ ์ต๋๋ค.
[root@docker-worker /]# mkdir /dockerLAB-web
[root@docker-worker /]# cd /dockerLAB-web
Dockerfile์ ์์ฑํฉ๋๋ค. ๋์๋ฌธ์์ ์ฃผ์ํด์ฃผ์ธ์!
[root@docker-worker dockerLAB-web]# vim Dockerfile
FROM centos:7
MAINTAINER The CentOS Project <cloud-ops@centos.org>
LABEL Vendor="CentOS"\
License=GPLv2\
Version=2.4.6-40
RUN yum -y --setopt=tsflags=nodocs update && \
yum -y --setopt=tsflags=nodocs install httpd && \
yum clean all
EXPOSE 80
ADD run-httpd.sh /run-httpd.sh
RUN chmod -v +x /run-httpd.sh
CMD ["/run-httpd.sh"]
run-httpd.sh ์คํฌ๋ฆฝํธ ํ์ผ์ ์์ฑํฉ๋๋ค.
[root@docker-worker dockerLAB-web]# vim run-httpd.sh
#!/bin/bash
rm -rf /run/httpd/* /tmp/httpd*
exec /usr/sbin/apachectl -DFOREGROUND
2. ๋์ปค ์ด๋ฏธ์ง ๋น๋
๋์ปค ํ์ผ์ ์ด์ฉํด์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
docker build ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค :)
docker build <์ต์ > <๋์ปคํ์ผ ๊ฒฝ๋ก>
-t(--tag) ์ต์ ์ ์์ฑํ ์ด๋ฏธ์ง ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
[root@docker-worker dockerLAB-web]# docker build -t web-server .
Sending build context to Docker daemon 4.096kB
Step 1/8 : FROM centos:7
7: Pulling from library/centos
75f829a71a1c: Pull complete
Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Status: Downloaded newer image for centos:7
---> 7e6257c9f8d8
Step 2/8 : MAINTAINER The CentOS Project <cloud-ops@centos.org>
---> Running in 4ef41baed202
Removing intermediate container 4ef41baed202
---> 5b08bd1fe165
Step 3/8 : LABEL Vendor="CentOS" License=GPLv2 Version=2.4.6-40
---> Running in 6c7412c489b5
Removing intermediate container 6c7412c489b5
---> da321585858e
Step 4/8 : RUN yum -y --setopt=tsflags=nodocs update && yum -y --setopt=tsflags=nodocs install httpd && yum clean all
---> Running in 412dee75234c
---> 37c5cbc37671
Step 5/8 : EXPOSE 80
---> Running in 58be0106a293
Removing intermediate container 58be0106a293
---> 97576edd73ee
Step 6/8 : ADD run-httpd.sh /run-httpd.sh
---> 3e1b7bcfeb36
Step 7/8 : RUN chmod -v +x /run-httpd.sh
---> Running in b9cffeee4929
mode of '/run-httpd.sh' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
Removing intermediate container b9cffeee4929
---> eb93504aaa05
Step 8/8 : CMD ["/run-httpd.sh"]
---> Running in d2f6f8d1ecd2
Removing intermediate container d2f6f8d1ecd2
---> d18677cad8de
Successfully built d18677cad8de
Successfully tagged web-server:latest
์ ์์ฑ๋์๋์ง ํ์ธํด๋ด ๋๋ค.
[root@docker-worker dockerLAB-web]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web-server latest d18677cad8de 36 seconds ago 260MB
centos 7 7e6257c9f8d8 7 weeks ago 203MB
3. ๋์ปค ์ปจํ ์ด๋ ์์ฑ ๋ฐ ํ ์คํธ
Dockerfile์ ๊ฐ์ง๊ณ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ์ต๋๋ค.
์ด์ ์ด ์ด๋ฏธ์ง๋ก ์ปจํ
์ด๋๋ฅผ ์คํํฉ๋๋ค.
web-server ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํด์ web_test๋ผ๋ ์ปจํ ์ด๋๋ฅผ ์คํํฉ๋๋ค.
[root@docker-worker dockerLAB-web]# docker run --name web_test -d -p 80:80 web-server
83765a69d85a559c81c59ef22a13d04458fa95fbe16328d311e94e0df35d6c9a
์ปจํ ์ด๋๊ฐ ์ ์คํ๋์๋์ง ํ์ธํฉ๋๋ค.
[root@docker-worker dockerLAB-web]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83765a69d85a web-server "/run-httpd.sh" 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp web_test
์ปจํ ์ด๋์ ์ ์ํด์ index.html ํ์ผ์ ์์ฑํฉ๋๋ค.
[root@docker-worker dockerLAB-web]# docker exec -it web_test /bin/bash
[root@83765a69d85a /]# echo "Test WEB Server" > /var/www/html/index.html
[root@83765a69d85a /]# exit
exit
์ปจ๋ฐ์ด๋๊ฐ ์ ๋์ํ๋์ง ํ์ธํด๋ด
๋๋ค :)
"Test WEB Server"๋ผ๊ณ ์ ๋์ค๋ค์!!
[root@docker-worker dockerLAB-web]# curl 127.0.0.1
Test WEB Server
์ค์ต์ด ๋ง๋ฌด๋ฆฌ ๋์์ต๋๋ค :)
๊ณ ์ํ์ จ์ต๋๋ค.