[๐Ÿณ Docker ๐Ÿณ] ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋ณผ๋ฅจ

Yohan_05ยท2023๋…„ 1์›” 31์ผ
0

Docker

๋ชฉ๋ก ๋ณด๊ธฐ
6/11

๋„์ปค ๋ ˆ์ด์–ด ์•„ํ‚คํ…์ฒ˜

docker build -t app(๋นŒ๋“œ)

  • ๋นŒ๋“œ ๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ Dockerfile์„ ๊ธฐ๋ฐ˜์œผ๋กœ Docker Image๋ฅผ ๋นŒ๋“œํ•จ.
  • Image ๋‚ด๋ถ€๋Š” ๋ ˆ์ด์–ด ๊ตฌ์กฐ
  • Image ๋‚ด ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ 4, 5 ๋ ˆ์ด์–ด์˜ ์†Œ์Šค ์ฝ”๋“œ์™€ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ๋งŒ ์ˆ˜์ •๋˜๊ณ  ๋ ˆ์ด์–ด 1,2,3์˜ ๊ตฌ์กฐ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋ธŒ๋žœ์น˜์—์„œ Layer4, 5์˜ ๋ณ€๊ฒฝ ์ •๋ณด๋งŒ New Layer 4, 5๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋ฐฉ์‹)

docker run app(์‹คํ–‰) โ†’

  • Layer 5๊นŒ์ง€์˜ ๋ ˆ์ด์–ด๋“ค์€ Image Layer๊ฐ€ ๋˜์–ด ์ฝ๊ธฐ ์ „์šฉ์ด ๋˜๊ณ  ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅ.
  • ๋˜ํ•œ ์ฝ๊ธฐ/์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ Container Layer๊ฐ€ ์ƒ์„ฑ ๋˜์–ด 2๊ฐœ์˜ ๋ ˆ์ด์–ด๊ฐ€ ๋˜๋ฉฐ ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ์‹œ ์‚ญ์ œ๊ฐ€ ๋œ๋‹ค.(์ž„์‹œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹์„๋“ฏ)
  • ์˜ต์…˜ ์ง€์ •์„ ํ†ตํ•ด ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ  ์ €์žฅ๋˜๋„๋ก ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ

  • ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ ํŠน์ • ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธํ•œ๋‹ค.
# ํ˜ธ์ŠคํŠธ์˜ /opt/html ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ nginx ์˜ ์›น ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋งˆ์šดํŠธ
$ docker run -d \
  --name nginx \
  -v /opt/html:/usr/share/nginx/html \
  nginx

๋ณผ๋ฅจ ์ปจํ…Œ์ด๋„ˆ

  • ํŠน์ • ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
$ docker run -d \
  -name my-volume \
  -it \
  -v /opt/html:/usr/share/nginx/
  html \
  ubuntu:focal
  
# my-volume ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณผ๋ฅจ์„ ๊ณต์œ 
$ docker run -d \
  -name nginx \
  --volumes-from my-volume \
  nginx

๋„์ปค ๋ณผ๋ฅจ

๋„์ปค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ณผ๋ฅจ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ /var/lib/docker/volumes/${volume-name}/_data ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

# web-volume ๋„์ปค ๋ณผ๋ฅจ ์ƒ์„ฑ
$ docker volume create --name db

# ๋„์ปค์˜ web-volume ๋ณผ๋ฅจ์„ nginx์˜ ์›น ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋งˆ์šดํŠธ
$ docker run -d \
  --name fastcampus-mysql
  -v db:/var/lib/mysql \
  -p 3306:3306 \
  mysql:5.7

์ฝ๊ธฐ ์ „์šฉ ๋ณผ๋ฅจ ์—ฐ๊ฒฐ

๋ณผ๋ฅจ ์—ฐ๊ฒฐ ์„ค์ •์— :ro ์˜ต์…˜์„ ํ†ตํ•ด ์ฝ๊ธฐ ์ „์šฉ ๋งˆ์šดํŠธ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ๋„์ปค์˜ web-volume ๋ณผ๋ฅจ์„ nginx ์˜ ์›น ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ฝ๊ธฐ ์ „์šฉ ๋งˆ์šดํŠธ
$ docker run -d \
  --name nginx \
  -v web-volume:/usr/share/nginx/html:ro \
  nginx
profile
์•ˆ๋…•ํ•˜์„ธ์š” DevOps ์—”์ง€๋‹ˆ์–ด๋กœ ํ˜„์—…์—์„œ ํ™œ๋™์ค‘์ธ ์š”ํ•œ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€