Docker ๋„คํŠธ์›Œํฌ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

๋„์ปค ๋„คํŠธ์›Œํฌ๋Š” ์‹ค์ œ ๋ฆฌ๋ˆ…์Šค ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ ์œ„์— ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„์™€ IPAM ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๊ณ„์ธต์ฒ˜๋Ÿผ ์˜ฌ๋ผ๊ฐ€๊ณ , ๊ทธ ์œ„์—์„œ ๋„์ปค ์—”์ง„์ด ๋…ผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด ์ปจํ…Œ์ด๋„ˆ์™€ ์—ฐ๊ฒฐํ•œ๋‹ค.

1

Network Infrastructure
  • ์‹ค์ œ ๋ฆฌ๋ˆ…์Šค์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค (eth0, wlan0 ๋“ฑ), ๋ธŒ๋ฆฌ์ง€, ๋ผ์šฐํ„ฐ, iptables, ipvs ๊ฐ™์€ ์ปค๋„ ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ์ด ๋Œ์•„๊ฐ€๋Š” ๊ธฐ๋ฐ˜ ๊ณ„์ธต
Network Driver
  • ๋„คํŠธ์›Œํฌ์˜ ์ข…๋ฅ˜ (bridge, overlay, macvlan ๋“ฑ)๋ฅผ ์ •ํ•˜๊ณ , ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์ž์› (๋ธŒ๋ฆฌ์ง€ ๋””๋ฐ”์ด์Šค, VXLAN ๋“ฑ)์„ ์‹ค์ œ๋กœ ๋งŒ๋“œ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ณ„์ธต
  • bridge๋Š” ๋กœ์ปฌ ๋ธŒ๋ฆฌ์ง€, overlay๋Š” ๋ฉ€ํ‹ฐํ˜ธ์ŠคํŠธ ๋ถ„์‚ฐ ๋„คํŠธ์›Œํฌ, macvlan์€ ํ˜ธ์ŠคํŠธ NIC์ฒ˜๋Ÿผ ๋™์ž‘
IPAM Driver
  • IP Address Management. ๊ฐ ๋„คํŠธ์›Œํฌ์˜ IP ํ’€, ์„œ๋ธŒ๋„ท์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค IP๋ฅผ ํ• ๋‹น
  • ๊ธฐ๋ณธ IPAM ์™ธ์— ์™ธ๋ถ€ DHCP ๋“ฑ ์ปค์Šคํ…€ ๋“œ๋ผ์ด๋ฒ„๋„ ๊ฐ€๋Šฅ
Docker Engine
  • ์œ„ ๋“œ๋ผ์ด๋ฒ„ ๊ณ„์ธต์„ ํ†ตํ•ฉ
  • ์‚ฌ์šฉ์ž๊ฐ€ docker network create, docker network connect ๊ฐ™์€ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋ฉด ์‹ค์ œ ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค์™€ IP ํ• ๋‹น, ๋ผ์šฐํŒ… ์ •์ฑ… ๋“ฑ์„ ์ฒ˜๋ฆฌ
Docker Network
  • ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋„คํŠธ์›Œํฌ ๋‹จ์œ„
  • bridge, overlay, macvlan, host, none ๋“ฑ ๋‹ค์–‘ํ•œ ์œ ํ˜•์ด ์žˆ๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํŠน์ • ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•˜๋ฉด, ๋ฆฌ๋ˆ…์Šค ๋‚ด์—์„œ ์‹ค์ œ ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค (์˜ˆ: ๋ธŒ๋ฆฌ์ง€, VXLAN ๋“ฑ)๊ฐ€ ์ƒ์„ฑ
Network Sandbox
  • ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ์ƒ์„ฑ๋˜๋Š” ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ ๊ณต๊ฐ„
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ๊ฒฉ๋ฆฌ๋˜์–ด ์ž์‹ ์˜ ๊ฐ€์ƒ ์ด๋”๋„ท (veth), ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”, iptables ๋ฃฐ, /etc/hosts, /etc/resolv.conf๋ฅผ ๋”ฐ๋กœ ๋ณด์œ 
Endpoint
  • ๋„คํŠธ์›Œํฌ์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ถ™์„ ๋•Œ ๋งŒ๋“ค์–ด์ง€๋Š” ์—ฐ๊ฒฐ์ 
  • ์ปจํ…Œ์ด๋„ˆ์˜ veth ์ธํ„ฐํŽ˜์ด์Šค ํ•œ ์ชฝ์ด host ๋ธŒ๋ฆฌ์ง€(๋„คํŠธ์›Œํฌ)๋กœ, ํ•œ ์ชฝ์ด ์ปจํ…Œ์ด๋„ˆ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ์—ฐ๊ฒฐ
  • ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—ฌ๋Ÿฌ ๋„คํŠธ์›Œํฌ์— ์—ฌ๋Ÿฌ endpoint๋กœ ๋™์‹œ์— ๋ถ™์„ ์ˆ˜๋„ ์žˆ์Œ

๋„์ปค์—์„œ ์ง€์›ํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„

Note

์ด ์ค‘์—์„œ bridge, host, none์ด ๋กœ์ปฌ ๊ธฐ๋ณธ ๋‚ด์žฅ
overlay, macvlan, ipvlan์€ ํ™˜๊ฒฝ/ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋”ฐ๋ผ ์ง€์›(์ผ๋ถ€ OS์—์„œ๋Š” ์ œํ•œ ์žˆ์Œ)
๋Œ€๋ถ€๋ถ„์˜ ๋„คํŠธ์›Œํฌ ์š”๊ตฌ๋Š” bridge, overlay, host ์กฐํ•ฉ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ.

bridge ย 
  • ๊ธฐ๋ณธ๊ฐ’. ๋‹จ์ผ ํ˜ธ์ŠคํŠธ ๋‚ด์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ€์ƒ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ.
  • ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ๋‚ด๋ถ€ IP ํ• ๋‹น, ํ˜ธ์ŠคํŠธ์™€๋Š” NAT๋กœ ํ†ต์‹ .
  • docker network create ๊ธฐ๋ณธ ์˜ต์…˜.
  • ์‚ฌ์šฉ ์˜ˆ: ์—ฌ๋Ÿฌ ์›น์•ฑ, DB๋ฅผ ํ•œ ์„œ๋ฒ„์—์„œ ๋”ฐ๋กœ ๋„์šธ ๋•Œ
host ย 
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ 100% ๊ณต์œ  ย 
  • ๋ณ„๋„ IP/NAT ์—†์ด, ํ˜ธ์ŠคํŠธ์—์„œ ์—ด๋ ค์žˆ๋Š” ํฌํŠธ์— ์ง์ ‘ ์ ‘๊ทผ.
  • ํฌํŠธ ๋งคํ•‘(-p) ์˜ต์…˜ ๋ฌด์˜๋ฏธ
  • ์ฃผ๋กœ ํผํฌ๋จผ์Šค ๊ทน๋Œ€ํ™”, ๋กœ์šฐ๋ ˆ๋ฒจ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ
none ย 
  • ๋„คํŠธ์›Œํฌ ๋ฏธ์—ฐ๊ฒฐ ์ƒํƒœ
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ–์ง€ ์•Š์Œ(์ธํ„ฐ๋„ท, ๋‚ด๋ถ€ ํ†ต์‹  ๋ชจ๋‘ ๋ถˆ๊ฐ€)
  • ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์™€ ์™„์ „ํžˆ ๊ฒฉ๋ฆฌ๋œ ์‹คํ—˜, ๋ณด์•ˆ ํ™˜๊ฒฝ ๋“ฑ์— ์‚ฌ์šฉ
overlay ย 
  • ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ(๋ฉ€ํ‹ฐ์„œ๋ฒ„)์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฐ€์ƒ์œผ๋กœ ์—ฐ๊ฒฐ
  • VXLAN ๋“ฑ ํ„ฐ๋„๋ง ๊ธฐ์ˆ ๋กœ, ์„œ๋ฒ„ ๊ฐ„ ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ†ต์‹ 
  • Docker Swarm, Kubernetes ๋“ฑ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ์—์„œ ํ•„์ˆ˜
macvlan ย 
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹ค์ œ ๋ฌผ๋ฆฌ NIC์ฒ˜๋Ÿผ ๋™์ž‘(๊ณ ์œ  MAC ์ฃผ์†Œ/IP ๋ถ€์—ฌ)
  • ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ์™€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ L2 ์Šค์œ„์น˜์ฒ˜๋Ÿผ ์ง์ ‘ ํ†ต์‹  ๊ฐ€๋Šฅ
  • IoT, ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ ์—ฐ๋™ ๋“ฑ, ๋ฌผ๋ฆฌ๋ง ํ†ตํ•ฉ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์— ์ ํ•ฉ
ipvlan ย 
  • macvlan๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, IP ์ฃผ์†Œ๋งŒ ๋ถ„๋ฆฌํ•ด ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ์— ๋ถ€์—ฌ
  • MAC ์ฃผ์†Œ๋Š” ๊ณต์œ , IP๋งŒ ๋…๋ฆฝ
  • ๊ณ ์„ฑ๋Šฅ ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ

macOS์™€ Linux์—์„œ ๋„์ปค ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ ์ฐจ์ด

Linux
  • ๋„์ปค ๋ฐ๋ชฌ(dockerd)์ด ๋ฆฌ๋ˆ…์Šค ์ปค๋„์—์„œ ์ง์ ‘ ์‹คํ–‰
  • ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„(bridge, overlay ๋“ฑ)๊ฐ€ ๋ฆฌ๋ˆ…์Šค ๋„คํŠธ์›Œํฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค, ๋ธŒ๋ฆฌ์ง€(bridge), veth ํŽ˜์–ด(veth), iptables, ipvs ๋“ฑ ์ปค๋„ ๊ธฐ๋Šฅ์„ ๋„ค์ดํ‹ฐ๋ธŒํ•˜๊ฒŒ ์‚ฌ์šฉ
    • ๋„ค์ž„์ŠคํŽ˜์ด์Šค: ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ๋ถ„๋ฆฌ๋œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ์ œ๊ณต
    • bridge(docker0): ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ์™€ ํ˜ธ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜์˜ ๋‚ด๋ถ€ ๊ฐ€์ƒ ์Šค์œ„์น˜๋กœ ๋ฌถ์Œ
    • veth pair: ์ปจํ…Œ์ด๋„ˆ โ†” ๋ธŒ๋ฆฌ์ง€(๋˜๋Š” ํ˜ธ์ŠคํŠธ) ์—ฐ๊ฒฐ์šฉ ๊ฐ€์ƒ ์ด๋”๋„ท ์ผ€์ด๋ธ” ์—ญํ• 
    • enp0sX, eth0 ๋“ฑ: ๋ฆฌ๋ˆ…์Šค ํ˜ธ์ŠคํŠธ์˜ ์‹ค์ œ ๋ฌผ๋ฆฌ NIC ์ด๋ฆ„
  • ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ(bridge ๋“ฑ)๊ฐ€ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ ๋„คํŠธ์›Œํฌ์™€ ๊ฑฐ์˜ 1:1๋กœ ๋™์ž‘
  • ์„ฑ๋Šฅ, ํ˜ธํ™˜์„ฑ, ์ปค์Šคํ…€ ๋„คํŠธ์›Œํฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ œ์•ฝ์ด ์—†์Œ
macOS
  • ๋ฆฌ๋ˆ…์Šค ์ปค๋„์ด ์—†์Œ โ†’ ์ง„์งœ dockerd๊ฐ€ ์ง์ ‘ ๋ชป ๋Œ์•„๊ฐ
  • Docker Desktop์ด ๋ฆฌ๋ˆ…์Šค ๊ฐ€์ƒ๋จธ์‹ (์˜ˆ์ „์—” HyperKit, ์ตœ๊ทผ์—” Apple Silicon์šฉ Lima/VM, QEMU ๋“ฑ) ์œ„์— dockerd์™€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋Œ๋ฆผ
  • ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ๋Š” VM ๋‚ด๋ถ€์—์„œ๋งŒ ๋งŒ๋“ค์–ด์ง (ex: ๋ฆฌ๋ˆ…์Šค VM ์•ˆ์˜ bridge, veth, iptables)
    • bridge, veth, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋“ฑ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ€์ƒ๋จธ์‹  ๋‚ด๋ถ€์—์„œ๋งŒ ๋™์ž‘
    • macOS์—์„œ ๋ณด์ด๋Š” en0, en1, bridge100 ๋“ฑ์€ ๋งฅ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค
  • macOS์˜ ๋„คํŠธ์›Œํฌ๋Š” โ€œ๊ฐ€์ƒ๋จธ์‹ ๊ณผ ํ˜ธ์ŠคํŠธ ์‚ฌ์ดโ€์—์„œ NAT, ํฌํŠธํฌ์›Œ๋”ฉ ๋“ฑ์œผ๋กœ ์ค‘๊ณ„๋จ
    • ex: macOS์˜ localhost:ํฌํŠธ โ†’ VM ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค โ†’ ์ปจํ…Œ์ด๋„ˆ
  • macvlan ๋“ฑ ์ผ๋ถ€ ๊ณ ๊ธ‰ ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ์€ ๋™์ž‘ ๋ถˆ๊ฐ€ ๋˜๋Š” ์ œ์•ฝ ์žˆ์Œ
    • ๋ฌผ๋ฆฌ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค(macvlan ๋“ฑ) ์ง์ ‘ ์—ฐ๊ฒฐ ๋ถˆ๊ฐ€
    • veth, bridge๋Š” VM ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์ฃผ์š” ์ฐจ์ด ํฌ์ธํŠธ
bridge ๋„คํŠธ์›Œํฌ
  • Linux: ์ปจํ…Œ์ด๋„ˆ์™€ ํ˜ธ์ŠคํŠธ๊ฐ€ ๊ฐ™์€ ๋ธŒ๋ฆฌ์ง€ ๋‚ด์—์„œ ๋ฐ”๋กœ ํ†ต์‹  ๊ฐ€๋Šฅ, iptables๋กœ ๋ผ์šฐํŒ…/ํฌํŠธํฌ์›Œ๋”ฉ ์ฒ˜๋ฆฌ
  • macOS: ๋ธŒ๋ฆฌ์ง€๋Š” ๋ฆฌ๋ˆ…์Šค VM ๋‚ด๋ถ€์—๋งŒ ์กด์žฌ, macOS ํ˜ธ์ŠคํŠธ์—์„œ ์ง์ ‘ ๋ธŒ๋ฆฌ์ง€์— ์ ‘๊ทผ ๋ถˆ๊ฐ€
    • ๋Œ€์‹  Docker Desktop์ด โ€œํฌํŠธํฌ์›Œ๋”ฉโ€ ๊ธฐ๋Šฅ์œผ๋กœ ๋งตํ•‘ํ•ด์คŒ
host ๋„คํŠธ์›Œํฌ
  • Linux: --network=host ์“ฐ๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค (eth0, localhost ๋“ฑ)๋ฅผ ์™„์ „ํžˆ ๊ณต์œ 
    • ํฌํŠธ ๋งคํ•‘(-p)์ด ํ•„์š” ์—†๊ณ , ํ˜ธ์ŠคํŠธ์™€ ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ๋™์ž‘
  • macOS: Docker Desktop์—์„œ ์ตœ๊ทผ host ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹ค์ œ๋กœ ๊ณต์œ ํ•˜๋Š” ๊ฑด ๋ฆฌ๋ˆ…์Šค VM ๋‚ด๋ถ€์˜ ๋„คํŠธ์›Œํฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค
    • macOS์˜ ์ง„์งœ ๋ฌผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ(ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ localhost, ๊ณต์ธ IP, ๋ฐฉํ™”๋ฒฝ ๋“ฑ)์™€๋Š” ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Œ
    • ํฌํŠธํฌ์›Œ๋”ฉ์ด๋‚˜ ์ถ”๊ฐ€ ์„ค์ • ์—†์ด โ€œ์ปจํ…Œ์ด๋„ˆ โ†” macOS ํ˜ธ์ŠคํŠธ ๊ฐ„ ๋„คํŠธ์›Œํฌ๋ฅผ 1:1๋กœ ๊ณต์œ โ€ํ•˜๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅ
    • ๋”ฐ๋ผ์„œ host ๋„คํŠธ์›Œํฌ๋ฅผ ์จ๋„ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ๊ณผ ๋™์ž‘ ๋ฐฉ์‹, ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋„คํŠธ์›Œํฌ ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฅด๋‹ˆ ์ฃผ์˜ ํ•„์š”
macvlan, ipvlan
  • Linux: NIC ๋ ˆ๋ฒจ์—์„œ ๊ฐ€์ƒ ์ธํ„ฐํŽ˜์ด์Šค ๋งŒ๋“ค์–ด ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ, VLAN ์—ฐ๋™๋„ ๊ฐ€๋Šฅ
  • macOS: ์ด๋Ÿฐ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„ ์•„์˜ˆ ์ง€์› ์•ˆ ํ•˜๊ฑฐ๋‚˜, ๊ฐ€์ƒ๋จธ์‹  ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—๋งŒ ํ•œ์ •
Overlay, ๋ฉ€ํ‹ฐํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ
  • Linux: overlay ๋„คํŠธ์›Œํฌ ๋งŒ๋“ค์–ด์„œ ์—ฌ๋Ÿฌ ๋ฆฌ๋ˆ…์Šค ํ˜ธ์ŠคํŠธ ์‚ฌ์ด์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ ์ง์ ‘ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
  • macOS: overlay ์ž์ฒด๋Š” VM ์•ˆ์—์„œ๋งŒ ๋Œ์•„๊ฐ€๊ณ , ์‹ค์ œ ์™ธ๋ถ€ ํ˜ธ์ŠคํŠธ/ํด๋Ÿฌ์Šคํ„ฐ์™€ ์—ฐ๊ฒฐ์€ ์–ด๋ ต๊ฑฐ๋‚˜ ๋ณ„๋„ ํ„ฐ๋„๋ง ํ•„์š”
์„ฑ๋Šฅ
  • Linux: ๋„คํŠธ์›Œํฌ I/O๊ฐ€ ๊ณง๋ฐ”๋กœ ์ปค๋„๋กœ, ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฑฐ์˜ ์—†์Œ
  • macOS: ํ•ญ์ƒ โ€œVM์„ ํ•œ ๋ฒˆ ๊ฑฐ์น˜๋Š” ๊ตฌ์กฐโ€๋ผ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ, ํŒจํ‚ท ๋“œ๋กญ, throughput ๊ฐ์†Œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ

์ •๋ฆฌ

  • ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„์™€ IPAM ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์‹ค์ œ ์ปค๋„ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ, ์ฃผ์†Œ ํ• ๋‹น์„ ์ถ”์ƒํ™”
  • ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ๋ณ„๋„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค(=network sandbox)๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์ถฉ๋Œ ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜
  • ๋…ผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ๋ฅผ CLI/API๋กœ ์ž์œ ๋กญ๊ฒŒ ๋งŒ๋“ค๊ณ  ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์‹œ์— ์ ‘์† ๊ฐ€๋Šฅ
  • overlay, macvlan, 3rd party CNI ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ ํ™•์žฅ์„ฑ ์šฐ์ˆ˜

์ด ๊ตฌ์กฐ ๋•๋ถ„์— ํ•œ ํ˜ธ์ŠคํŠธ(bridge), ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ(overlay), ๋ฌผ๋ฆฌ ๋„คํŠธ์›Œํฌ(macvlan), ์™„์ „ ๋…๋ฆฝ(host/none) ๋“ฑ ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€๋ฅผ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์—์„œ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

Footnotes

  1. https://k21academy.com/docker-kubernetes/docker-networking-different-types-of-networking-overview-for-beginners/ โ†ฉ