Search

7. Docker Network

1. Docker Network๋ž€?

โ€ข
Docker ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Œ
โ€ข
Docker๋Š” ์ž์ฒด์ ์œผ๋กœ ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ , ์™ธ๋ถ€(ํ˜ธ์ŠคํŠธ/์ธํ„ฐ๋„ท)์™€๋„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ
โ€ข
์ฆ‰, ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ , ์™ธ๋ถ€ ๋…ธ์ถœ, ์„œ๋น„์Šค ๋ถ„๋ฆฌ๋ฅผ ์ œ์–ดํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ๊ฐ€ Docker Network

2. Docker ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„

bridge (๊ธฐ๋ณธ๊ฐ’)

โ€ข
๋ณ„๋„ ์˜ต์…˜์ด ์—†์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ๋Š” bridge ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋จ
โ€ข
์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ๋‚ด๋ถ€ IP๋กœ ํ†ต์‹  ๊ฐ€๋Šฅ, ์™ธ๋ถ€ ์ ‘๊ทผ์€ p ์˜ต์…˜์œผ๋กœ ํฌํŠธ ๋งคํ•‘ํ•ด์•ผ ํ•จ
docker run --name <์ปจํ…Œ์ด๋„ˆ๋ช…> -d <์ด๋ฏธ์ง€๋ช…> docker network ls # bridge ๋„คํŠธ์›Œํฌ ํ™•์ธ
Bash
๋ณต์‚ฌ

host

โ€ข
์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ์™€ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ณต์œ 
โ€ข
ํ˜ธ์ŠคํŠธ์˜ IP/ํฌํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ (ํฌํŠธ ๋งคํ•‘ ํ•„์š” ์—†์Œ)
docker run --name <์ปจํ…Œ์ด๋„ˆ๋ช…> -d --network host <์ด๋ฏธ์ง€๋ช…>
Bash
๋ณต์‚ฌ

none

โ€ข
๋„คํŠธ์›Œํฌ๋ฅผ ์•„์˜ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
โ€ข
์™„์ „ํžˆ ๊ณ ๋ฆฝ๋œ ์ƒํƒœ๋กœ ์‹คํ–‰
docker run --name <์ปจํ…Œ์ด๋„ˆ๋ช…> -d --network none <์ด๋ฏธ์ง€๋ช…>
Bash
๋ณต์‚ฌ

overlay

โ€ข
์—ฌ๋Ÿฌ Docker ํ˜ธ์ŠคํŠธ(์„œ๋ฒ„) ๊ฐ„์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉ (Swarm/Kubernetes ํ™˜๊ฒฝ)

macvlan

โ€ข
์ปจํ…Œ์ด๋„ˆ์— ์‹ค์ œ ๋ฌผ๋ฆฌ ๋„คํŠธ์›Œํฌ ์นด๋“œ์ฒ˜๋Ÿผ MAC ์ฃผ์†Œ๋ฅผ ๋ถ€์—ฌ
โ€ข
๋™์ผ LAN์˜ ๋‹ค๋ฅธ ์žฅ์น˜๋“ค๊ณผ ์ง์ ‘ ํ†ต์‹  ๊ฐ€๋Šฅ

3. ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ ๋ช…๋ น์–ด

๋„คํŠธ์›Œํฌ ํ™•์ธ

docker network ls docker network inspect <๋„คํŠธ์›Œํฌ๋ช…>
Bash
๋ณต์‚ฌ

์‚ฌ์šฉ์ž ์ •์˜ ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ

โ€ข
๊ธฐ๋ณธ bridge ๋Œ€์‹  ์‚ฌ์šฉ์ž ์ •์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ค๋ฉด ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
docker network create <๋„คํŠธ์›Œํฌ๋ช…> docker run --name <์ปจํ…Œ์ด๋„ˆ๋ช…> -d --network mynetwork <์ด๋ฏธ์ง€๋ช…>
Bash
๋ณต์‚ฌ
โ€ข
๊ฐ™์€ mynetwork ์•ˆ์— ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ๋Š” ping <์ปจํ…Œ์ด๋„ˆ๋ช…> ์œผ๋กœ ํ†ต์‹  ๊ฐ€๋Šฅ

๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ/ํ•ด์ œ

docker network connect <๋„คํŠธ์›Œํฌ๋ช…> <์ปจํ…Œ์ด๋„ˆ๋ช…> docker network disconnect <๋„คํŠธ์›Œํฌ๋ช…> <์ปจํ…Œ์ด๋„ˆ๋ช…>
Bash
๋ณต์‚ฌ

4. ์‹ค์Šต ์˜ˆ์‹œ

1.
์‚ฌ์šฉ์ž ์ •์˜ ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ
docker network create mynetwork
Bash
๋ณต์‚ฌ
2.
๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์•ˆ์— ์ปจํ…Œ์ด๋„ˆ 2๊ฐœ ์‹คํ–‰
docker run --name <์ปจํ…Œ์ด๋„ˆ๋ช…1> -d --network mynetwork <์ด๋ฏธ์ง€๋ช…> docker run --name <์ปจํ…Œ์ด๋„ˆ๋ช…2> -d --network mynetwork <์ด๋ฏธ์ง€๋ช…>
Bash
๋ณต์‚ฌ
3.
<์ปจํ…Œ์ด๋„ˆ๋ช…1> ์—์„œ <์ปจํ…Œ์ด๋„ˆ๋ช…2> ๋กœ ์ ‘๊ทผ (์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ํ†ต์‹  ๊ฐ€๋Šฅ)

ํ•ต์‹ฌ ์š”์•ฝ

โ€ข
Docker ๋„คํŠธ์›Œํฌ = ์ปจํ…Œ์ด๋„ˆ ๊ฐ„, ์™ธ๋ถ€์™€ ํ†ต์‹ ์„ ์ œ์–ดํ•˜๋Š” ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ
โ€ข
์ฃผ์š” ๋“œ๋ผ์ด๋ฒ„: bridge(๊ธฐ๋ณธ), host, none, overlay, macvlan
โ€ข
์‚ฌ์šฉ์ž ์ •์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์“ฐ๋ฉด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ํ†ต์‹  ๊ฐ€๋Šฅ
โ€ข
docker network create, connect, disconnect ๋“ฑ์œผ๋กœ ์ œ์–ด