์์ ํฌ์คํธ์์๋ Docker์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ๊ณผ ์ปจํ
์ด๋ ์คํ ๊ณผ์ ์ ์ดํด๋ดค์ต๋๋ค.
๊ทธ ๊ณผ์ ์์ ํ์ํ ์ปจํ
์ด๋๋ docker pull
๋ช
๋ น์ด๋ฅผ ํตํด Docker Hub์์ ์ด๋ฏธ์ง๋ก ๋ด๋ ค๋ฐ์ ์ฌ์ฉํ์ฃ .
๊ทธ๋ ๋ค๋ฉด, ๋ง์ฝ ์ฐ๋ฆฌ ํ์ฌ์์ ์ง์ ์ด์ ์ค์ธ ์๋น์ค๋ฅผ ์ด๋ฏธ์ง๋ก ๋ง๋ค ์ ์๋ค๋ฉด?
ํธ๋ํฝ ๊ธ์ฆ, ์ธํ๋ผ ์ด์ , ํ
์คํธ ํ๊ฒฝ ๋ถ๋ฆฌ ๋ฑ ๋ค์ํ ์ํฉ์์ ์ด ์ด๋ฏธ์ง๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ์๋ก์ด ์ปจํ
์ด๋๋ฅผ ๋์ธ ์ ์์ ๊ฒ๋๋ค.
์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๋๊ตฌ๊ฐ ๋ฐ๋ก Dockerfile
์
๋๋ค.
Dockerfile
์ Docker ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์คํฌ๋ฆฝํธ ํ์ผ์
๋๋ค.
๋ณดํต ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์์นํ๋ฉฐ, ์ฌ๊ธฐ์ ์์ฑํ ๋ช
๋ น์ด๋ค์ ๊ธฐ๋ฐ์ผ๋ก Docker๋ ์๋์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ๋๋ docker build
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ์ด๋ฏธ์ง๋ก ์ํ๋ ์ปจํ
์ด๋๋ฅผ ์์ ๋กญ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
์์ ์ค์ตํ๋ Ubuntu 22.04 + Nginx ํ๊ฒฝ์ Dockerfile๋ก ์ ์ํด๋ณด๊ฒ ์ต๋๋ค.
# ๋ฒ ์ด์ค ์ด๋ฏธ์ง
FROM ubuntu:22.04
MAINTAINER jw.kim <jongbell4@gmail.com>
# ๋น๋ํ ๋ชจ๋ ์ค์ (ํจํค์ง ์ค์น ์ ์ฌ์ฉ์ ์
๋ ฅ ๋ฐฉ์ง)
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Seoul
# ํจํค์ง ์ค์น
RUN apt-get update && apt-get install -y tzdata
RUN apt-get install -y nginx
# HTML ํ์ผ ๋ณต์ฌ
COPY index.html /var/www/html/index.html
# ์ธ๋ถ ํฌํธ ์ง์ (๋ช
์์ ์ ์ธ)
EXPOSE 80/tcp
# ์ปจํ
์ด๋ ์์ ์ ์คํ๋ ๋ช
๋ น์ด
CMD service nginx start && tail -f /dev/null
๋ช ๋ น์ด | ์ค๋ช |
---|---|
FROM | ์ฌ์ฉํ ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ง์ (ex. ubuntu:22.04 ) |
MAINTAINER | ์ด๋ฏธ์ง ์์ฑ์ ์ ๋ณด (์ ํ) |
ARG | ์ด๋ฏธ์ง ๋น๋ ์์ ์ ์ฌ์ฉ๋๋ ๋ณ์ ์ ์ |
ENV | ์ด๋ฏธ์ง/์ปจํ ์ด๋ ๋ด์์ ์ฌ์ฉํ ํ๊ฒฝ๋ณ์ ์ค์ |
RUN | ์ปจํ ์ด๋ ์์ฑ ์ ์คํํ ๋ช ๋ น์ด |
COPY , ADD | ํธ์คํธ์ ํ์ผ/๋๋ ํ ๋ฆฌ๋ฅผ ์ด๋ฏธ์ง๋ก ๋ณต์ฌ |
EXPOSE | ์ปจํ ์ด๋๊ฐ ์ฌ์ฉํ๋ ํฌํธ๋ฅผ ๋ช ์ (์ค์ ํฌํธ ์ด๋ฆผ์ ์๋) |
CMD | ์ปจํ ์ด๋ ์คํ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํํ ๋ช ๋ น์ด |
๐ก ์ฐธ๊ณ :
ARG
๋ build ์์ ์๋ง ์ ํจํ๊ณ ,ENV
๋ ์คํ ์ค์๋ ์ ์ฉ๋๋ฉฐ ARG
๋ณด๋ค ์ฐ์ ์ ์ฉ๋ฉ๋๋ค.# ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ (์์)
$ tree ubuntu-image
ubuntu-image
โโโ Dockerfile
โโโ index.html
# ์ด๋ฏธ์ง ๋ชฉ๋ก ํ์ธ
$ docker images
# Dockerfile ๊ธฐ๋ฐ ์ด๋ฏธ์ง ๋น๋
$ docker build -t ubuntu-nginx .
# ๋น๋ ํ ์ด๋ฏธ์ง ํ์ธ
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-nginx latest 4fb8xxxxxxx 3 minutes ago ...
์ด์ ์๋ก ๋น๋ํ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ , ํฌํธ ํฌ์๋ฉ ์ค์ ์ ์ถ๊ฐํด ์น ์์ฒญ์ ํ ์คํธํด๋ณด๊ฒ ์ต๋๋ค.
# ์ปจํ
์ด๋ ์คํ (ํธ์คํธ 80ํฌํธ๋ฅผ ์ปจํ
์ด๋ 80ํฌํธ์ ์ฐ๊ฒฐ)
$ docker run -itd --name container-unginx -p 80:80 ubuntu-nginx
# ์คํ ์ค์ธ ์ปจํ
์ด๋ ํ์ธ
$ docker ps
# ์ปจํ
์ด๋ IP ํ์ธ
$ docker inspect container-unginx | grep IPAddress
"IPAddress": "172.17.0.10",
# ์ปจํ
์ด๋์ HTTP ์์ฒญ
$ curl http://172.17.0.10
<h1> hello this is ubuntu-nginx image container-unginx</h1>
๐ Dockerfile ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ ์ด๋ฏธ์ง๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๊ณ , ์น ์์ฒญ๋ ์ ์ฒ๋ฆฌ๋๊ณ ์์ต๋๋ค!
์ด๋ฒ ๊ธ์์๋ Dockerfile
์ ์์ฑํ๊ณ ์ง์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ค, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ
์ด๋๋ฅผ ์คํํด๋ณด๋ ๊ณผ์ ์ ๋ค๋ค์ต๋๋ค.
์ฌ์ค ์ด ์์๋ ๋งค์ฐ ๋จ์ํ ํํ์ด๊ณ , ์ค๋ฌด์์๋ ์ปจํ
์ด๋ ํ๋์ ํ๋์ ํ๋ก์ธ์ค๋ง ๊ตฌ๋ํ๋ ๋ฐฉ์
์ด ๊ถ์ฅ๋ฉ๋๋ค.
์:
์ ํฌ ํ์ฌ์์๋ ์ค์ ๋ก๋ Ubuntu, Rocky Linux ์ผ๋ถ๋ฅผ ์ ์ธํ๋ฉด ๋๋ถ๋ถ์ ์ปจํ ์ด๋๋ ํ๋์ ์ญํ ๋ง ์ํํ๋๋ก ๊ตฌ์ฑํ๊ณ ์์ต๋๋ค.
๋ค์ ์๋ฆฌ์ฆ์์๋ ๋คํธ์ํฌ ์ค์ , ์คํ ๋ฆฌ๋ฆฌ ์ค์ ๋ฑ Docker๋ฅผ ์กฐ๊ธ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฌํ ๊ธฐ๋ฅ๋ค์ ๋ํด ์ถ๊ฐ์ ์ผ๋ก ์์๋ณด๋๋กํ๊ฒ ์ต๋๋ค.