๋์ปค ๋คํธ์ํฌ(Docker Network)
๋์ปค์ ์ปจํ ์ด๋๋ ๊ฐ๊ธฐ ๋ค๋ฅธ host๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ฐ์ํ๊ฒฝ์ด์ง๋ง ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ค๋ฅธ ์๋ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ง์ฝ ๋ด๊ฐ ์น์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ๊ฐ์ ์ปจํ ์ด๋๋ก ์คํํ์ ๋, ์น์๋ฒ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ก ์ ๊ทผํด์ผ ํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ip์ฃผ์์ port๋ฅผ ์ ์ ์ผ๋ก ์ ๊ทผํ๋ ๊ฒ์ ์ด์ํ๊ฒฝ์์ ๋งค์ฐ ์ํํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปจํ ์ด๋๊ฐ ์ฌ์์ํด์ ip์ฃผ์๊ฐ ๋ฌ๋ผ์ง๋ ๊ฒฝ์ฐ์๋ ์น์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์, ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ --link ์ต์ ์ ๋ถ์ฌํด์ ์ฐ๊ฒฐํ ์ ์์ผ๋, ์ด ๋ฐฉ์ ๋ํ ์ด์ํ๊ฒฝ์ ๋ง์ง ์์ต๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ๋ง์๋๋ฆฌ๋ฉด, ์ปค์คํ ๋คํธ์ํฌ(Custom Network)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ์ปค์คํ ๋คํธ์ํฌ์ ๋ํด ์ ์ ์์๋ณด๊ฒ ์ต๋๋ค.
๋์ปค ์ปค์คํ ๋คํธ์ํฌ
๋์ปค ์ปค์คํ ๋คํธ์ํฌ(Docker Custom Network)๋ ์ปจํ ์ด๋ ๊ฐ ํต์ ์ ๋ณด๋ค ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๋๋ก ์ฌ์ฉ์๊ฐ ์ง์ ์์ฑํ๊ณ ์ค์ ํ ๋คํธ์ํฌ๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ปค๋ ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ bridge, host, none ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๋คํธ์ํฌ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ปค์คํ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋คํธ์ํฌ๋ฅผ ๋ ์ ์ฐํ๊ณ ํจ์จ์ ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
๋์ปค ์ปค์คํ ๋คํธ์ํฌ์ ์ฃผ์ ํน์ง
- ์ปจํ
์ด๋ ๊ฐ ์ด๋ฆ ๊ธฐ๋ฐ ํต์ ๊ฐ๋ฅ
- ๊ธฐ๋ณธ bridge ๋คํธ์ํฌ์์๋ ์ปจํ ์ด๋ ๊ฐ ํต์ ์ ์ํด IP ์ฃผ์๋ฅผ ์ฌ์ฉํด์ผ ํ์ง๋ง, ์ปค์คํ ๋คํธ์ํฌ๋ฅผ ์์ฑํ๋ฉด ์ปจํ ์ด๋ ์ด๋ฆ(DNS)์ ๊ธฐ๋ฐ์ผ๋ก ํต์ ํ ์ ์์ต๋๋ค.
- ์: db ์ปจํ ์ด๋๊ฐ web ์ปจํ ์ด๋๋ฅผ db:5432๋ก ์ ๊ทผ ๊ฐ๋ฅ.
- ๊ฒฉ๋ฆฌ๋ ๋คํธ์ํฌ ํ๊ฒฝ ์ ๊ณต
- ์ฌ๋ฌ ๋คํธ์ํฌ๋ฅผ ์์ฑํ๊ณ ์ปจํ ์ด๋๋ฅผ ๋คํธ์ํฌ๋ณ๋ก ํ ๋นํ์ฌ ๋คํธ์ํฌ๋ฅผ ๊ฒฉ๋ฆฌํ ์ ์์ต๋๋ค.
- ํน์ ์ปจํ ์ด๋ ๊ฐ์ ํต์ ์ ์ ํํ๊ฑฐ๋, ํ์ ์์๋ง ํ์ฉ ๊ฐ๋ฅ.
- IP ๋ฒ์ ๋ฐ ์๋ธ๋ท ์ค์ ๊ฐ๋ฅ
- ์ฌ์ฉ์๋ ์ปค์คํ ๋คํธ์ํฌ ์์ฑ ์ ์๋ธ๋ท ๋ฐ IP ๋ฒ์๋ฅผ ๋ช ์์ ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
- ํน์ ๋คํธ์ํฌ ํ๊ฒฝ์ด๋ ๋ฐฉํ๋ฒฝ ์ค์ ์ ๋ฐ๋ผ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ ์ ์์.
- ๋คํธ์ํฌ ๋๋ผ์ด๋ฒ๋ฅผ ์ ํ ๊ฐ๋ฅ
- Bridge, Overlay, Macvlan ๋ฑ ๋ค์ํ ๋คํธ์ํฌ ๋๋ผ์ด๋ฒ ์ค ์ ํ ๊ฐ๋ฅ.
- ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ํธ์คํธ์์ ์คํ๋๋ ์ปจํ ์ด๋ ๊ฐ์ ํต์ ์ ์ํด Overlay ๋๋ผ์ด๋ฒ ์ฌ์ฉ.
์ปค์คํ ๋คํธ์ํฌ ์์ฑ ๋ฐฉ๋ฒ
1. ์ปค์คํ ๋คํธ์ํฌ ์์ฑ
docker network create \\
--driver bridge \\
--subnet=192.168.1.0/24 \\
my_custom_network
- -driver: ์ฌ์ฉํ ๋คํธ์ํฌ ๋๋ผ์ด๋ฒ ์ง์ (๊ธฐ๋ณธ๊ฐ: bridge)
- -subnet: ๋คํธ์ํฌ์ IP ๋ฒ์ ์ค์
2. ์ปจํ ์ด๋๋ฅผ ์ปค์คํ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ
docker run -d --name web --network my_custom_network nginx
docker run -d --name db --network my_custom_network postgres
์ด๋ ๊ฒ ํ๋ฉด web๊ณผ db ์ปจํ ์ด๋๋ ์๋ก ์ด๋ฆ ๊ธฐ๋ฐ(DNS)์ผ๋ก ํต์ ํ ์ ์์ต๋๋ค.
3. ๊ธฐ์กด ์ปจํ ์ด๋๋ฅผ ์ปค์คํ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ
docker network connect my_custom_network ๊ธฐ์กด_์ปจํ
์ด๋_์ด๋ฆ
4. ์ปค์คํ ๋คํธ์ํฌ ํ์ธ
docker network ls
์ฌ์ฉ ์ฌ๋ก
- ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ
- ๊ฐ ์๋น์ค(์ปจํ ์ด๋)๋ฅผ ๋ณ๋์ ์ปค์คํ ๋คํธ์ํฌ๋ก ๋๋ ๊ฒฉ๋ฆฌ.
- ํ์ ์ ํน์ ๋คํธ์ํฌ์๋ง ์ฐ๊ฒฐํ์ฌ ์ํธ ํต์ ์ค์ .
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณด์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปจํ ์ด๋๋ฅผ ์ธ๋ถ์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํน์ ๋คํธ์ํฌ์๋ง ๋ฐฐ์น.
- ๋ฉํฐ ํธ์คํธ ๋คํธ์ํฌ
- Overlay ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ Docker Swarm์ด๋ Kubernetes์ ํตํฉ ๊ฐ๋ฅ.
network-alias
docker network create my_network
docker run --rm -d --name js1 --network my_network --network-alias js_network busybox sleep infinite
docker run --rm -d --name js2 --network my_network --network-alias js_network busybox sleep infinite
docker inspect js1
docker run --rm -it --name js3 --network my_network busybox sh
network-alias๋ ํ๋์ ๋คํธ์ํฌ ์ด๋ฆ์ผ๋ก ์ฌ๋ฌ ๋ฐฉ๋ฉด์ผ๋ก ์ ์ํ ์ ์๊ฒ ํด์ค๋๋ค. ์๋ฅผ ๋ค์ด, js1, js2์ปจํ ์ด๋์ ์ปค์คํ ๋คํธ์ํฌ alias๋ฅผ js_network๋ก ์ค์ ํ ํ ping js_network๋ฅผ ํด๋ณด๋ฉด js1๊ณผ js2์ ๊ณจ๊ณ ๋ฃจ ์ ๊ทผํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ถํ js3๋ผ๋ ์ปจํ ์ด๋๊ฐ ๋ค์ด์์ ๋์๋ js_network๋ก network-alias๋ฅผ ๊ฑธ์ด๋๊ฒ ๋๋ฉด, js3๋ ์์ฐ์ค๋ฝ๊ฒ ๋๊ธฐ์ด์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
๋์ปค ์คํ ๋ฆฌ์ง
๋์ปค(Docker)๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๊ฐ์ํ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํํ ์ ์๋๋ก ๋์์ค๋๋ค. ๋์ปค์ ์คํ ๋ฆฌ์ง(Storage)๋ ์ปจํ ์ด๋ ๋ฐ์ดํฐ์ ์์์ฑ๊ณผ ๊ด๋ฆฌ๋ฅผ ์ฑ ์์ง๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ ๋ฆฌ์ง๊ฐ ํ์ํ ์ด์ ๋ ๋ ๊ฐ์ง์ ๋๋ค. ์ฒซ ๋ฒ์งธ๋ ์ปจํ ์ด๋ ์ข ๋ฃ ์ ๋ฐ์ดํฐ๊ฐ ์ ์ง๋์ง ์๊ธฐ ๋๋ฌธ์, DB์ ๊ฐ์ด ๋ฐ์ดํฐ ์ ์ง๊ฐ ํ์ํ ๊ฒฝ์ฐ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค(๋ณผ๋ฅจ). ๋ ๋ฒ์งธ๋ ํธ์คํธ์ ํน์ ํ์ผ์ ๊ณต์ ํ๊ฑฐ๋ ์ด์ฉํ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ Bind Mount๋ฅผ ํตํด ์ปจํ ์ด๋์ ํธ์คํธ์ ์ ์ฅ๊ณต๊ฐ์ด ๊ณต์ ๋ ์ ์์ต๋๋ค(๋ฐ์ธ๋ ๋ง์ดํธ).
1. ๋์ปค ๋ณผ๋ฅจ
๋์ปค ๋ณผ๋ฅจ์ ์ปจํ ์ด๋ ์ธ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ ์ปจํ ์ด๋ ์๋ช ๊ณผ ๊ด๊ณ์์ด ์ ์ง๋ฉ๋๋ค.
๋์ปค ๋ณผ๋ฅจ์ Anonymous Volume๊ณผ Named Volume์ผ๋ก ๋๋ฉ๋๋ค. Anonymous Volume์ Dockerfile์์ VOLUME์ ์ฌ์ฉํ์ง๋ง docker run ๋ช ๋ น์ด์ ๋ณ๋์ -v ์ต์ ์ ์ฃผ์ง ์์ ๊ฒฝ์ฐ์ ๋๋ค(๋ณดํต DB ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์์ ์คํํ ๋). Named Volume์ docker volume create [์ด๋ฆ] ๋ช ๋ น์ด๋ฅผ ํตํด ๋ณผ๋ฅจ์ ์์ฑํ๊ณ docker run -v๋ก ๋ณผ๋ฅจ์ ๋ง์ดํธํฉ๋๋ค. ๋ณผ๋ฅจ์ ๋ง์ดํธํ ๋
- ํน์ง:
- ์ปจํ ์ด๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ดํฐ ๊ด๋ฆฌ ๊ฐ๋ฅ.
- ํธ์คํธ์ ํน์ ๋๋ ํ ๋ฆฌ๋ ์ธ๋ถ ์คํ ๋ฆฌ์ง์ ์ ์ฅ.
- ์ฌ์ฉ๋ฒ:
# ๋ณผ๋ฅจ ์์ฑ
docker volume create my_volume
# ๋ณผ๋ฅจ์ ์ปจํ
์ด๋์ ๋ง์ดํธ, ์ปจํ
์ด๋๊ฐ ํธ์คํธ์ ๊ฒฝ๋ก ๋ณ๊ฒฝ ๋ถ๊ฐ(ro์ต์
)
docker run -v my_volume:/app/data:ro my_image
2. ๋ฐ์ธ๋ ๋ง์ดํธ
๋ฐ์ธ๋ ๋ง์ดํธ๋ ํธ์คํธ ํ์ผ ์์คํ ์ ํน์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ปจํ ์ด๋์ ์ฐ๊ฒฐํฉ๋๋ค.
- ํน์ง:
- ๋์ปค ์์ง ์ธ๋ถ์์ ๊ด๋ฆฌ.
- ํน์ ๊ฒฝ๋ก๋ฅผ ์ง์ ์ฐ๊ฒฐํด ์ฌ์ฉ.
- ์ฌ์ฉ๋ฒ:
docker run -v /host/path:/container/path:ro my_image
3. tmpfs ๋ง์ดํธ
tmpfs ๋ง์ดํธ๋ ํธ์คํธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ์์์ฑ์ด ํ์ํ์ง ์์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ ์ฉํฉ๋๋ค.
- ์ฌ์ฉ๋ฒ:
docker run --tmpfs /app/tmp my_image
4. ๋์ปค ๋ ์ด์ด
์ปจํ ์ด๋๋ ์ฌ๋ฌ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋ ํ์ผ ์์คํ ์ ์ฌ์ฉํฉ๋๋ค.
- ์ด๋ฏธ์ง ๋ ์ด์ด: ๋ถ๋ณ(immutable)์ผ๋ก ์ ์ฅ๋๋ฉฐ, ์ปจํ ์ด๋ ๊ฐ ๊ณต์ ๊ฐ๋ฅ.
- ์ปจํ ์ด๋ ๋ ์ด์ด: ์ฐ๊ธฐ ๊ฐ๋ฅ(writeable) ๋ ์ด์ด๋ก, ์ปจํ ์ด๋ ์คํ ์ ์์ฑ. ์ปจํ ์ด๋๊ฐ ์ญ์ ๋๋ฉด ์ฌ๋ผ์ง.
5. ์คํ ๋ฆฌ์ง ์ต์ ๋น๊ต
์คํ ๋ฆฌ์ง ๋ฐฉ์ | ๋ฐ์ดํฐ ์์์ฑ | ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก |
๋ณผ๋ฅจ | O | ๋ฐ์ดํฐ ์ ์ง ํ์ ์ |
๋ฐ์ธ๋ ๋ง์ดํธ | O | ํน์ ํ์ผ/๋๋ ํ ๋ฆฌ ๊ณต์ |
tmpfs | X | ์์ ๋ฐ์ดํฐ ์ ์ฅ |
6. ์ค์ฉ์ ์ธ ํ์ฉ ์์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปจํ ์ด๋: ์์ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํด ๋ณผ๋ฅจ์ ์ฌ์ฉ.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ ๊ด๋ฆฌ: ํธ์คํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐ์ธ๋ ๋ง์ดํธํด ๋ก๊ทธ ํ์ผ ๊ด๋ฆฌ.
- ์บ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ: tmpfs๋ฅผ ์ฌ์ฉํด ๋น ๋ฅธ ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ.
'์๋น์ค & ํด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] 3. ๋์ปค ์ปดํฌ์ฆ(Docker compose) (0) | 2025.01.06 |
---|---|
[Docker] 1. ๋์ปค, ์ด๋ฏธ์ง, ์ปจํ ์ด๋, ๋ ์ง์คํธ๋ฆฌ (0) | 2024.12.24 |
[Metric] ํ๋ก๋ฉํ ์ฐ์ค + ๊ทธ๋ผํ๋ (0) | 2024.12.23 |
[๋ฉ์ธ์ง ๋ธ๋ก์ปค] RabbitMQ vs Apache KafKa (0) | 2024.12.16 |
[git] Git rebase(๋ฆฌ๋ฒ ์ด์ค)๋? (0) | 2023.08.10 |
๋๊ธ