[Docker] Docker Network ๊ตฌ์กฐ

Uk-Jakeยท2024๋…„ 10์›” 16์ผ

Docker

๋ชฉ๋ก ๋ณด๊ธฐ
7/11
post-thumbnail
๐Ÿ’ก

๋“ค์–ด๊ฐ€๋ฉฐโ€ฆ

์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜์˜ ๋‹จ์ผ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑํ•  ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค๋ฉด ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ์ด ํ•„์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— Docker Network ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Docker ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ๋…์„ ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. Docker Network์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

  • Docker Network๋Š” ๋ฆฌ๋ˆ…์Šค ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ๊ฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋…๋ฆฝ๋œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋„์ปค์—”์ง„์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑํ•  ๋•Œ ๋‚ด๋ถ€ IP๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

eth0 - Host NIC

  • eth0์€ ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ˜ธ์ŠคํŠธ(Docker๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ˜ธ์ŠคํŠธ)๊ฐ€ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

docker0 - Bridge

  • docker0๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” Bridge ๋„คํŠธ์›Œํฌ์ž…๋‹ˆ๋‹ค.
  • Bridge ๋„คํŠธ์›Œํฌ๋Š” ์Šค์œ„์น˜์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ๊ณ ์œ ํ•œ IP๋ฅผ ํ• ๋‹นํ•ด์ฃผ์–ด ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

veth(Veth Pair)

  • ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์™€ ์™ธ๋ถ€๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋ฉด, Veth ํŽ˜์–ด๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

2. Docker Network์˜ ์ฃผ์š” ์ข…๋ฅ˜

  • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ docker0 Bridge๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‚ฌ์šฉ์ž์˜ ์„ ํƒ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Bridge ๋„คํŠธ์›Œํฌ

  • Bridge ๋„คํŠธ์›Œํฌ๋Š” ๋„์ปค์˜ ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ ์œ ํ˜•์œผ๋กœ, ๋‹จ์ผ ํ˜ธ์ŠคํŠธ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Host ๋„คํŠธ์›Œํฌ

  • Host ๋„คํŠธ์›Œํฌ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ๋กœ, ํ˜ธ์ŠคํŠธ์™€ ๊ฐ™์€ IP์ฃผ์†Œ ๋„คํŠธ์›Œํฌ ์„ค์ •์„ ๊ณต์œ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • Host ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ์ด ์ตœ์ ํ™” ๋˜์ง€๋งŒ ๊ฒฉ๋ฆฌ ๊ธฐ๋Šฅ์ด ์‚ฌ๋ผ์ ธ ๋ณด์•ˆ์ด ์ทจ์•ฝํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

None ๋„คํŠธ์›Œํฌ

  • None ๋„คํŠธ์›Œํฌ๋Š” ์™ธ๋ถ€์™€์˜ ํ†ต์‹ ์ด๋‚˜ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์™€ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ํ•„์š”์—†์„ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Macvlan ๋„คํŠธ์›Œํฌ

  • Macvlan ๋„คํŠธ์›Œํฌ๋Š” ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๊ณ ์œ ํ•œ MAC ์ฃผ์†Œ๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฌผ๋ฆฌ์ ์ธ ๋„คํŠธ์›Œํฌ ๋””๋ฐ”์ด์Šค์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์นด๋“œ๋ฅผ ๊ฐ€์ƒํ™”ํ•ด ๋ฌผ๋ฆฌ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ๋™์ผํ•˜๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

3. ๋„คํŠธ์›Œํฌ ์„ค์ • ๋ฐ ๊ด€๋ฆฌ

๋„คํŠธ์›Œํฌ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ ๋ช…๋ น์–ด

  • ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ
    docker network create <๋„คํŠธ์›Œํฌ ์ด๋ฆ„>
  • ๋„คํŠธ์›Œํฌ ์‚ญ์ œ
    docker network rm <๋„คํŠธ์›Œํฌ ์ด๋ฆ„>

์ปจํ…Œ์ด๋„ˆ์— ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ

  • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํŠน์ • ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ.
    docker run --network <๋„คํŠธ์›Œํฌ ์ด๋ฆ„> <์ด๋ฏธ์ง€ ์ด๋ฆ„>

์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์— ๋„คํŠธ์›Œํฌ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐ

  • ์ปจํ…Œ์ด๋„ˆ์— ๋„คํŠธ์›Œํฌ ์ถ”๊ฐ€:
    docker network connect <๋„คํŠธ์›Œํฌ ์ด๋ฆ„> <์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„>
  • ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋„คํŠธ์›Œํฌ ์ œ๊ฑฐ:
    docker network disconnect <๋„คํŠธ์›Œํฌ ์ด๋ฆ„> <์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„>

๋„คํŠธ์›Œํฌ ๋ชฉ๋ก ๋ฐ ์ •๋ณด ํ™•์ธ

  • ๋„คํŠธ์›Œํฌ ๋ชฉ๋ก ํ™•์ธ:
    docker network ls
    
  • ๋„คํŠธ์›Œํฌ ์ •๋ณด ํ™•์ธ:
    docker network inspect <๋„คํŠธ์›Œํฌ ์ด๋ฆ„>

์ฐธ๊ณ ์ž๋ฃŒ

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