๐ ๊ณต๋ถ ๊ณ๊ธฐ
์ํฐ๋ ์ฑ๋ฆฐ์ง๊ฐ ์ด๋ฒ ๋ฌ ์ ๊ณตํ๋ ๊ฐ์๋ Docker! Docker ๊ฐ์ ์ด 4๋ฒ ์ค 2๋ฒ์งธ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
Docker ํ์ฉ
๋ชฉ์ฐจ
๐์ด๋ก ํธ : Docker Compose
1๏ธโฃ 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๋ง์ผ๋ก๋ ์ปดํฌ์ฆ๊ฐ ํ๋ ๊ธฐ๋ฅ์ ๋ค ํ ์ ์์ง๋ง
ํ๋ ์ปจํ ์ด๋ ๋ง๋ค ์ด๋ฐ ๋ค์ํ ์ต์ ์ ๋ช ๋ น์ด๋ก ๊ธธ๊ฒ ํ์ดํํด์ผํ๊ณ ๊ด๋ฆฌํ๊ธฐ๋ ํ๋ค๋ค.
๊ทธ๋์ ๋์ปค ์ปดํฌ์ฆ๊ฐ ํ์ํ๋ค!


๐์ค์ตํธ 2 : Dokcer Compose๋ก ์ฌ๋ฌ๊ฐ ์ปจํ ์ด๋ ๊ด๋ฆฌ
1๏ธโฃ ์ปดํฌ์ฆ ํ์ผ ์ฌ์ฉ
์ฌ์ฉํ๋ ค๋ ์ปดํฌ์ฆ ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ๋ก ๋ค์ด๊ฐ ์๋ ๋ช ๋ น์ด๋ฅผ ์น๋ฉด ํ๋ฒ์ ๋ชจ๋ ๊ฒ์ด ๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
# ํ์ : docker-compose -f ํ์ผ๋ช
์ปค๋งจ๋
docker-compose -f docker-compose.yml up --build
- docker-compose : ๋ช ๋ น์ด๋ฅผ ํตํด ์ปดํฌ์ฆ ํ์ผ ์คํ
- f ์ต์ : ์คํํ compose ํ์ผ์ ์ง์
- up : ์คํ์์ผ๋ผ
- --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 ํ์ผ๋ช
์ปค๋งจ๋


๐ฎ ์ฌ์ง์ด rm๋ ๋จ!

* Docker Compose ํ์ผ๋ช ์ด docker-compose.yml ์ด๋ผ๋ฉด
์๋์ฒ๋ผ -f ์ต์ ์์ด๋ ๊ฐ๋ฅ!

* run ์คํ์ ๋ช ๋ น ํ๋กฌํํธ ์ฌ์ฉํ๋ ค๋ฉด?
run ์คํํ๊ณ ๋์ ํฐ๋ฏธ๋์ ์ฌ์ฉ ๋ชปํ๋ ๋ฌธ์ ์ ์ด ์์๋ค.
ํ์ง๋ง runํ ๋ d ์ต์ ์ผ๋ก runํ๋ฉด ๋ฐ๋ชฌ๋ชจ๋๋ก ์ ํ๋์ด ๋ช ๋ น ํ๋กฌํํธ๋ก ๋์๊ฐ ์ ์๋ค!

- prune
์ ๊ฑฐํ๋ค.
๋ถํ์ํ ๊ฐ์ง์น๋ค.
๋ง๋ฆฐ์๋ ๊ทธ ํ๋ฃฌ๋ ๋ง๋ค
[๋ณธ๋ฌธ์ผ๋ก]
'DevOps > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ๋ฐฐ๋ ๋์ปค ์๋ฆฌ์ฆ 4] ์ปจํ ์ด๋ ๋ง๋ค๊ณ ํ๋ธ์ ๋ฐฐํฌํด๋ณด๊ธฐ (0) | 2023.04.13 |
---|---|
๋ฐ๋ฐฐ๋ ๋์ปค ์๋ฆฌ์ฆ 0~3-2] ๋์ปค ์ดํด๋ณด๊ธฐ (0) | 2023.04.12 |
์ํฐ๋ ์ฑ๋ฆฐ์ง Docker 1] ์ปจํ ์ด๋ ๊ธฐ์ , Docker์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ (0) | 2023.04.09 |
Docker] ๊ฐ๋ (0) | 2023.04.08 |
Docker] ์ด๋ฏธ์ง pull + ์ปจํ ์ด๋ ์ฌ์ฉ (2) | 2023.01.18 |