๐Ÿ“Œ ๊ณต๋ถ€ ๊ณ„๊ธฐ

์›ํ‹ฐ๋“œ ์ฑŒ๋ฆฐ์ง€๊ฐ€ ์ด๋ฒˆ ๋‹ฌ ์ œ๊ณตํ•˜๋Š” ๊ฐ•์˜๋Š” Docker! Docker ๊ฐ•์˜ ์ด 4๋ฒˆ ์ค‘ 2๋ฒˆ์งธ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

Docker ํ™œ์šฉ

๋ชฉ์ฐจ

 

๐Ÿ“์ด๋ก ํŽธ : Docker Compose

1๏ธโƒฃ Docker Compose ๋ž€?

์ด ์บ๋ฆญํ„ฐ๊ฐ€ docker Compose ์—ญํ•  ๊ทธ์ž์ฒด๋ฅผ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๋Š๋‚Œ

๋„์ปค ํŒŒ์ผ์€ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ

์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ฑด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ? ๊ทธ๊ฒŒ ๋ฐ”๋กœ ๋„์ปค ์ปดํฌ์ฆˆ์˜ ์—ญํ• ์ด๋‹ค. 

 

(๊ณต์‹ ๋ฌธ์„œ๋ž‘ ์นœํ•ด์ง€์„ธ์š”)

 

Overview

 

docs.docker.com

 

๋„์ปค ์ปดํฌ์ฆˆ ํŒŒ์ผ์€ ๋„์ปค ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„œ๋น„์Šค, ๋„คํŠธ์›Œํฌ ๋ฐ ๋ณผ๋ฅจ์„ ์ •์˜ํ•˜๋Š” yamlํŒŒ์ผ์„ ๋งํ•œ๋‹ค. 

  • ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ์ •์˜ํ•˜๊ณ  ์ œ์–ด
  • ์„ค์ • ํŒŒ์ผ์„ ๋„์ปค CLI๋กœ ๋ฒˆ์—ญํ•˜๋Š” ์—ญํ• ๋„ ํ•œ๋‹ค.

 

2๏ธโƒฃ Docker Compose ํŒŒ์ผ ๊ตฌ์„ฑ

 

* version 

๋„์ปค ์ปดํฌ์ฆˆ์˜ ๋ฒ„์ „์„ ์˜๋ฏธ.
ํ˜„์žฌ(230409 ๊ธฐ์ค€) version 3 ์ด์ƒ์„ ์‚ฌ์šฉ

 

* services

์‹คํ–‰ํ•˜๋ ค๋Š” ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ์ •์˜ํ•˜๋Š” ์˜์—ญ
์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ์ด๋ฆ„, ์ด๋ฏธ์ง€, ํฌํŠธ ๋งคํ•‘, ํ™˜๊ฒฝ๋ณ€์ˆ˜, ๋ณผ๋ฅจ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌ

 

    - image : ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€

    - build : ์ •์˜๋œ ๋„์ปคํŒŒ์ผ์—์„œ ์ด๋ฏธ์ง€ ๋นŒ๋“œํ•˜๊ณ  ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

    - environment :  ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • (run ๋ช…๋ น์–ด์˜ --env, -e ์˜ต์…˜๊ณผ ๋™์ผ)

    - command :  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์–ด (run ๋ช…๋ น์–ด ๋งˆ์ง€๋ง‰ command์™€ ๋™์ผ)

    - depends_on : ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ์˜์กด์„ฑ ์ฃผ์ž…. ์—ฌ๊ธฐ์— ์ ํžŒ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋จผ์ € ์ƒ์„ฑ๋˜์•ผ ์ด ํ‚ค์›Œ๋“œ๊ฐ€ ์‹คํ–‰

    - ports : ๊ฐœ๋ฐฉํ•  ํฌํŠธ ์ง€์ • (run ๋ช…๋ น์–ด์˜ -p ์™€ ๋™์ผ)

    - expose : ๋งํฌ๋กœ ์—ฐ๊ณ„๋œ ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ๋งŒ ๊ณต๊ฐœํ•  ํฌํŠธ ์„ค์ •

    - volumes : ์ปจํ…Œ์ด๋„ˆ์— ๋ณผ๋ฅจ ๋งˆ์šดํŠธ

    - restart : ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ์žฌ์‹œ์ž‘ ์ •์ฑ…

          - no : ์žฌ์‹œ์ž‘ ๋˜์ง€ ์•Š์Œ

          - always : ์™ธ๋ถ€์— ์˜ํ–ฅ์— ์˜ํ•ด ์ข…๋ฃŒ ๋˜์—ˆ์„ ๋•Œ ํ•ญ์ƒ ์žฌ์‹œ์ž‘ (์ˆ˜๋™์œผ๋กœ ๋„๊ธฐ ์ „๊นŒ์ง€)

          - on-failure : ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์‹œ ์žฌ์‹œ์ž‘

 

์ปดํฌ์ฆˆ ํŒŒ์ผ ๊ตฌ์„ฑ

 

๐Ÿ“ข ์ฐธ๊ณ 

  • yaml ํŒŒ์ผ์€ 2์นธ์”ฉ ๋“ค์—ฌ์“ฐ๊ธฐ(indent) ํ•ด์•ผํ•จ

 

 


๐Ÿ“์‹ค์ŠตํŽธ 1 : Dokcer CLI๋กœ ์—ฌ๋Ÿฌ๊ฐœ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ

๋„์ปค ์ปดํฌ์ฆˆ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ  ํ•˜๋‚˜ํ•˜๋‚˜ CLI๋กœ ํ•ด๋ณด๋Š” ์‹ค์Šต

 

 

1๏ธโƒฃ ๋„์ปค ๋„คํŠธ์›Œํฌ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ 

network ls ๋ช…๋ น์–ด (network list) ๋ฅผ ํ†ตํ•ด network๋“ค์„ ์กฐํšŒ

docker network ls

- bridge : ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ๋กœ ๋„์ปค ์—”์ง„์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ์—ฐ๊ฒฐ๋˜๋Š” ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ์— ํ•ด๋‹น

- host : ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ

- none : ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ปจํ…Œ์ด๋„ˆ  

 


 

2๏ธโƒฃ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋„์ปค ๋„คํŠธ์›Œํฌ ์‚ญ์ œ 

prune[๊ฐ์ฃผ:1] ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

docker network prune

 


 

3๏ธโƒฃ ๋„์ปค ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ 

docker network create ๋„คํŠธ์›Œํฌ์ด๋ฆ„

 


3๏ธโƒฃ ๋„์ปค CLI๋กœ๋งŒ ์ปจํ…Œ์ด๋„ˆ ์„ค์ • 

CLI๋งŒ์œผ๋กœ๋„ ์ปดํฌ์ฆˆ๊ฐ€ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ค ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ

ํ•˜๋‚˜ ์ปจํ…Œ์ด๋„ˆ ๋งˆ๋‹ค ์ด๋Ÿฐ ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ๋ช…๋ น์–ด๋กœ ๊ธธ๊ฒŒ ํƒ€์ดํ•‘ํ•ด์•ผํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ๋„ ํž˜๋“ค๋‹ค. 

๊ทธ๋ž˜์„œ ๋„์ปค ์ปดํฌ์ฆˆ๊ฐ€ ํ•„์š”ํ•˜๋‹ค! 

db ์ปจํ…Œ์ด๋„ˆ

 

app ์ปจํ…Œ์ด๋„ˆ

 

 

 


๐Ÿ“์‹ค์ŠตํŽธ 2 : Dokcer Compose๋กœ ์—ฌ๋Ÿฌ๊ฐœ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ

 

1๏ธโƒฃ ์ปดํฌ์ฆˆ ํŒŒ์ผ ์‚ฌ์šฉ 

์‚ฌ์šฉํ•˜๋ ค๋Š” ์ปดํฌ์ฆˆ ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋“ค์–ด๊ฐ€ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ํ•œ๋ฒˆ์— ๋ชจ๋“  ๊ฒƒ์ด ๋œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

# ํ˜•์‹ : docker-compose -f ํŒŒ์ผ๋ช… ์ปค๋งจ๋“œ
docker-compose -f docker-compose.yml up --build
  1. docker-compose : ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ปดํฌ์ฆˆ ํŒŒ์ผ ์‹คํ–‰
  2. f ์˜ต์…˜ : ์‹คํ–‰ํ•  compose ํŒŒ์ผ์„ ์ง€์ •
  3. up : ์‹คํ–‰์‹œ์ผœ๋ผ
  4. --build : ์ด๋ฏธ์ง€ ์ƒ์„ฑ

์ด๋ฏธ์ง€๋„ ์ปจํ…Œ์ด๋„ˆ๋„ ๋ชจ๋‘ ์ƒ์„ฑ๋œ ๋ชจ์Šต
์›Œ๋“œํ”„๋ ˆ์Šค๋„ ์ •์ƒ ์ž‘๋™ ํ™•์ธ

 

๐Ÿ“ข ์ฐธ๊ณ 

  • ์ปดํฌ์ฆˆ ํŒŒ์ผ์ด docker-compose.yml ์ด๋ผ๋ฉด f ์˜ต์…˜ ์‚ฌ์šฉ์—†์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํŒŒ์ผ๋ช…์ด ๋‹ค๋ฅด๋ฉด ๊ผญ -f ๋ฅผ ํ†ตํ•ด ์ง€์ •ํ•ด์ค˜์•ผ ํ•จ
  • f์˜ต์…˜์€ ๋ฉ€ํ‹ฐ๊ฐ€ ๊ฐ€๋Šฅํ•ด ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด์—์„œ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
docker-compose -f ์ปดํฌ์ฆˆํŒŒ์ผ1 -f ์ปดํฌ์ฆˆํŒŒ์ผ2 ๋ช…๋ น์–ด 
# docker compose [-f <arg>...] [--profile <name>...] [options] [COMMAND] [ARGS...]

 

 


โž• ์ถ”๊ฐ€ ๋‚ด์šฉ

 

* ์‹คํ–‰์ค‘์ธ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‘ stopํ•˜๊ธฐ 

docker stop $(docker ps -aq)

- a : (all) ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ๋ณด์—ฌ์ฃผ๊ธฐ

- q : (quiet) ์˜ค์ง ์ปจํ…Œ์ด๋„ˆ ID๋“ค๋งŒ ๋ณด์—ฌ์ฃผ๊ธฐ

๋”ฐ๋ผ์„œ $๋Š” ๋ณ€์ˆ˜์ด๊ณ  docker ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ปจํ…Œ์ด๋„ˆ์˜ id๋งŒ ์ถœ๋ ฅํ•ด ์™€ ๊ทธ id๋กœ ๋ชจ๋‘ stop ์‹œํ‚ค๋Š” ๋ช…๋ น์–ด 

 


 

* compose ํŒŒ์ผ๋กœ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ๋™์‹œ ๋ช…๋ น์–ด ์ ์šฉํ•˜๊ธฐ 

docker-compose -f ํŒŒ์ผ๋ช… ์ปค๋งจ๋“œ

์ปจํ…Œ์ด๋„ˆ start
์ปจํ…Œ์ด๋„ˆ stop

๐Ÿ˜ฎ ์‹ฌ์ง€์–ด rm๋„ ๋จ!

์˜ค์˜ค์˜ค

 


 

* Docker Compose ํŒŒ์ผ๋ช…์ด docker-compose.yml ์ด๋ผ๋ฉด 

์•„๋ž˜์ฒ˜๋Ÿผ -f ์˜ต์…˜ ์—†์ด๋„ ๊ฐ€๋Šฅ! 

 


 

* run ์‹คํ–‰์‹œ ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ ์‚ฌ์šฉํ•˜๋ ค๋ฉด? 

run ์‹คํ–‰ํ•˜๊ณ  ๋‚˜์„œ ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉ ๋ชปํ•˜๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ runํ•  ๋•Œ d ์˜ต์…˜์œผ๋กœ runํ•˜๋ฉด ๋ฐ๋ชฌ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜์–ด ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค!

 

 

 

 

  1. prune
    ์ œ๊ฑฐํ•˜๋‹ค.
    ๋ถˆํ•„์š”ํ•œ ๊ฐ€์ง€์น˜๋‹ค.
    ๋ง๋ฆฐ์ž๋‘ ๊ทธ ํ”„๋ฃฌ๋„ ๋งž๋‹ค
    [๋ณธ๋ฌธ์œผ๋กœ]

+ Recent posts