[๐Ÿ‹Docker] ๋„์ปค ๋„คํŠธ์›Œํฌ (Docker Network)

vincaยท2023๋…„ 12์›” 6์ผ
0
post-thumbnail

๐ŸŒŽ ๋„คํŠธ์›Œํฌ

๋„์ปค์˜ ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ์„ค์ • ๋ฐ ์„ธ๋ถ€์‚ฌํ•ญ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Visual Studio Code(VS Code)์˜ Docker ์ต์Šคํ…์…˜์ด ๋” ๋‚ซ๋‹ค.

๋˜ํ•œ Docker Desktop์—์„œ Network๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ์—ฌ๊ธฐ์„œ๋„ Extension์„ ํ†ตํ•ด์„œ ์ถ”๊ฐ€ํ•ด ์ค˜์•ผํ•œ๋‹ค.

๋„์ปค์˜ ๋„คํŠธ์›Œํฌ

Docker๋Š” ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค
ํ”Œ๋žซํผ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์ด๋Š” ๊ฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€
์ž์ฒด ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์™€ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
์„ ์˜๋ฏธํ•œ๋‹ค.
โ€ข Docker ๋„คํŠธ์›Œํฌ๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ, ์„œ๋กœ ํ†ต์‹ ํ•˜๋ ค๋ฉด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด์•ผ ํ•œ๋‹ค.

  • Docker ๋„คํŠธ์›Œํฌ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…
    โ€ข ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„ : Docker๋Š” ์—ฌ๋Ÿฌ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๊ฐ ๋“œ๋ผ์ด๋ฒ„๋Š” ํŠน์ • ์œ ํ˜•์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์ง€์›ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, โ€˜bridgeโ€™ ๋“œ๋ผ์ด๋ฒ„๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋„คํŠธ์›Œํฌ ์œ ํ˜•์„ ์ง€์›ํ•œ๋‹ค.
    โ€ข ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ : Docker ๋„คํŠธ์›Œํฌ๋Š” 'docker network create' ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ๋‹ค. ์ด ๋ช…๋ น์€ ๋„คํŠธ์›Œํฌ ์ด๋ฆ„๊ณผ ๋“œ๋ผ์ด๋ฒ„ ์œ ํ˜•์„ ์ธ์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.
    โ€ข ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ : ์ปจํ…Œ์ด๋„ˆ๋Š” 'docker network connect' ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ๋‹ค. ์ด ๋ช…๋ น์€ ๋„คํŠธ์›Œํฌ ์ด๋ฆ„๊ณผ ์ปจํ…Œ์ด๋„ˆ ID๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.

๋„์ปค ๋„คํŠธ์›Œํฌ์˜ ๋ถ„๋ฅ˜

  1. Bridge Network (๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ):
    • ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋กœ, ๋„์ปค๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ์ž…๋‹ˆ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ ๋‚ด์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ๋„คํŠธ์›Œํฌ๋Š” ๋™์ผ ํ˜ธ์ŠคํŠธ ๋‚ด์˜ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹  ๋˜๋Š” ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ํ†ต์‹ ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  2. Host Network (ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ):
    • ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํ‚น์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    • ํ˜ธ์ŠคํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” IP๋ฅผ ์ง์ ‘ ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค์— ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋„คํŠธ์›Œํฌ ๊ฒฉ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. Overlay Network (์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ):
    • ์—ฌ๋Ÿฌ ๋„์ปค ๋ฐ๋ชฌ์„ ์—ฐ๊ฒฐํ•˜๊ณ , Docker Swarm ์„œ๋น„์Šค์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ๋…ธ๋“œ ๊ฐ„ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    • Swarm ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์— ๊ฑธ์ณ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    • OS ์ˆ˜์ค€์˜ ๋ผ์šฐํŒ…์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์Šค์›œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

ํ˜„์žฌ ๋„์ปค ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

docker netwokr ls

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

docker network ls --filter driver=bridge

Docker network - Bridge

โ€ข ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋Š” ๋„์ปค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„ ์ค‘ ํ•˜๋‚˜๋กœ, ๊ฐ€์ƒ
์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ์—ฐ๊ฒฐํ•œ๋‹ค.
โ€ข ๋„์ปค๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ docker0 ๋ผ๋Š” ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ์ƒˆ๋กœ์šด
์ปจํ…Œ์ด๋„ˆ๋“ค์€ ์ด ๋„คํŠธ์›Œํฌ์— ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค.
โ€ข ์‚ฌ์šฉ์ž๋Š” docker network ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜,
๊ธฐ์กด์˜ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ์— ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ์„œ๋กœ ์ด๋ฆ„์ด๋‚˜ ๋ณ„์นญ์œผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋„์ปค๊ฐ€ ์ž๋™์œผ๋กœ ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์— iptables ๊ทœ์น™์„ ์„ค์ •ํ•˜์—ฌ ๋‹ค๋ฅธ ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ์ปจํ…Œ์ด๋„ˆ๋“ค๊ณผ์˜ ํ†ต์‹ ์„ ์ฐจ๋‹จํ•œ๋‹ค.

๋„์ปค ๋„คํŠธ์›Œํฌ Create ๋ช…๋ น์–ด

docker network create [option] network

option์„ ํ†ตํ•ด์„œ --diver ๋ฅผ ํ†ตํ•ด ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, --subnet์„ ํ†ตํ•ด ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋“ฑ ๊ฐ์ข… ๋„คํŠธ์›Œํฌ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•œ๋ฒˆ --driver=bridge ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด bridge ํƒ€์ž…์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

# ์ƒˆ๋กœ์šด web-net1 ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ
docker network create --driver=bridge web-net1
# ํ•„ํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ๊ฒ€์‚ญ
docker network ls --filter driver=bridge

์‹ค์ œ ์ƒ์„ฑ๋œ ์ƒ์„ธ ์ •๋ณด๋Š” VS Code์˜ Docker Extension์—์„œ๋„ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


Subnet : 172.20.0.0/16 ๋ฐ Gateway: 172.20.0.1๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜๋Š” ์—†์„๊นŒ?

์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์„œ๋ธŒ๋„ท์œผ ์ง์ ‘ ์ง€์ •ํ•˜์—ฌ ์ƒ์„ฑํ•ด ๋ณด๋„๋กํ•˜์ž.

์ง์ ‘ ์ง€์ •ํ•œ๋Œ€๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ธŒ๋ฆฟ์ง€๋ผ๋Š” ๊ฒƒ์€ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ฃผ๋Š” ๋„คํŠธ์›Œํฌ ์ข…๋ฅ˜์ด๋‹ค.

ํ•œ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์•ŒํŒŒ์ธ ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์›น๋„ท1์„ ๋ฌผ๊ณ  ์žˆ์Œ. ๋˜ ๋‹ค๋ฅธ ์•ŒํŒŒ์ธ ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์›น๋„ท1์„ ๋™์ผํ•˜๊ฒŒ ๋ฌผ๊ณ  ์žˆ์Œ

์—ฌ๊ธฐ์„œ ping ํ†ต์‹ ์„ ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ํ•‘์ด ๋ณด๋‚ด์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ ์„œ๋ธŒ๋„ท์„ ๊ฐ€์ง€๊ธฐ

์ปจํ…Œ์ด๋„ˆ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„œ๋ธŒ๋„ท์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” 2๊ฐœ์˜ ์„œ๋ธŒ๋„ท์„ ๊ฐ€์ง€๋„๋ก ํ•ด๋ณด์ž.

# ๊ธฐ๋ณธ web-net์„ ํ†ตํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
docker container run -it --name my_alpine1 --network web-net alpine
docker container run -it --name my_alpine2 --network web-net alpine
# my_alpine1์— ๋Œ€ํ•ด์„œ ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํฌ(new-web-net) ๋ถ€์—ฌ
docker network connect new-web-net my_alpine1
# my_alpine2์— ๋Œ€ํ•ด์„œ ์ƒˆ๋กœ์šด ๋‚ดํŠธ์›Œํฌ(new-web-net) ๋ถ€์—ฌ
docker network connect new-web-net my_alpine2

๊ธฐ์กด ์„œ๋ธŒ๋„ท๊ณผ ๋”๋ถˆ์–ด์„œ 172.21.0.4 ๋Œ€์—ญ์„ ๊ฐ€์ง€๋Š” ์ƒˆ๋กœ์šด ์„œ๋ธŒ๋„ท์ด eth1์œผ๋กœ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

my_alpine1์—์„œ my_alpine2์œผ๋กœ์˜ ๋‘ ์•„์ดํ”ผ ๋ชจ๋‘์—๊ฒŒ ping ํ†ต์‹ ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ์ˆ˜ ์žˆ๋‹ค.

์„œ๋กœ ๋‹ค๋ฅธ ๋Œ€์—ญ๊ฐ„์˜ ํ†ต์‹ 

  1. ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ์— ์ƒˆ๋กœ์šด web-net-3 ์„œ๋ธŒ๋„ท(๋„คํŠธ์›Œํฌ)๋ฅผ ์ถ”๊ฐ€.
  2. web-net-3๋ฅผ ๊ฐ€์ง€๋Š” ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ
# 1. my_alpine1์— ๋Œ€ํ•ด์„œ ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํฌ(new-web-net-3) ๋ถ€์—ฌ
docker network connect web-net-3 my_alpine1
# 2. web-net-3์„ ํ†ตํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
docker container run -it --name my_alpine3 --network web-net-3 alpine

1๋ฒˆ๊ณผ 2๋ฒˆ์˜ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋กœ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ• ๊นŒ?

๊ฐ ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‘ 17.28.X.X ๋Œ€์—ญ์˜ ์•„์ดํ”ผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

2๋ฒˆ ์ปจํ…Œ์ด๋„ˆ์—์„œ 1๋ฒˆ ์ปจํ…Œ์ด๋„ˆ๋กœ17.28.X.X ์•„์ดํ”ผ๋กœ Ping ํ†ต์‹ ์„ ๋ณด๋‚ด๋ณด์ž.

์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด 2๋ฒˆ ์ปจํ…Œ์ด๋„ˆ์—์„œ 1๋ฒˆ ์ปจํ…Œ์ด๋„ˆ์˜ ๋‹ค๋ฅธ ์„œ๋ธŒ๋„ท์œผ๋กœ์˜ Ping ํ†ต์‹ ์€ ๊ฐ€๋Šฅํ• ๊นŒ?

์—ฐ๊ฒฐ๋œ ์„œ๋ธŒ๋„ท์ด ์กด์žฌํ•˜์—ฌ๋„ ๋‹ค๋ฅธ๋Œ€์—ญ๋Œ€์— ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์™€์˜ ์—ฐ๊ฒฐ๋œ ํ†ต์‹ ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์„œ๋ธŒ๋„ท ํ™˜๊ฒฝ์ด ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ping์„ ๋ณด๋‚ผ ์ˆ˜๊ฐ€ ์—†๋‹ค.

์™ธ๋ถ€ ๋…ธ์ถœ(๋ฐฐํฌ)

๋„์ปค ๋„คํŠธ์›Œํฌ์—์„œ expose์™€ publish์˜ ์ฐจ์ด์ 

  • expose : ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ๋ฅผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์„ ์–ธํ•œ๋‹ค.
    expose๋œ ํฌํŠธ๋Š” ๋„์ปค ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ˜ธ์ŠคํŠธ๋‚˜ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
  • publish : ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ๋ฅผ ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ์™€ ๋ฐ”์ธ๋”ฉํ•˜์—ฌ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. publish๋œ ํฌํŠธ๋Š” expose๋œ ํฌํŠธ์™€ ๋‹ฌ๋ฆฌ ํ˜ธ์ŠคํŠธ์˜ IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

expose์™€ publish๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ์„ฑ์„
์ œ์–ดํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. expose๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ๋ฅผ ๋ฌธ์„œํ™”ํ•˜๊ณ ,
publis๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์„œ๋น„์Šค๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

ํฌํŠธํฌ์›Œ๋”ฉ์„ ํ†ตํ•œ ๋…ธ์ถœ

 docker run -d -p 8080:80 --name nginx nginx:latest

ํ˜ธ์ŠคํŠธ์˜ 8080 ํฌํŠธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ 80 ํฌํŠธ๋กœ ํฌ์›Œ๋”ฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
์ด๋Š” ํ˜ธ์ŠคํŠธ์˜ 8080 ํฌํŠธ๋กœ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ 80 ํฌํŠธ๋กœ ์ „๋‹ฌํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ์„œ๋น„์Šค(์›น ์„œ๋ฒ„)์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

๋„์ปค IPAM

Docker ๋„คํŠธ์›Œํฌ์—์„œ IP ์ฃผ์†Œ ๋ฐ ๊ด€๋ จ ์„ค์ •์„ ์ˆ˜๋™์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด๋‹ค.

  • driver : ์‚ฌ์šฉ์ž ์ •์˜ IPAM ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Docker๋Š” ๋‚ด์žฅ๋œ IPAM ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • config : IPAM ๊ตฌ์„ฑ

    • subnet : ์ปจํ…Œ์ด๋„ˆ์˜ ์„œ๋ธŒ๋„ท ๋ฒ”์œ„๋ฅผ ๊ตฌ์„ฑ
    • ip_range : ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” IP ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ์ง€์ •
    • gateway : ๋„คํŠธ์›Œํฌ์˜ ๊ฒŒ์ดํŠธ์›จ์ด ์„ค์ •
    • aux_addresses : ํŠน์ • IP ์ฃผ์†Œ ์ง์ ‘ ๊ณ ์ •
      ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•ด๋‹น IP ์ฃผ์†Œ๋Š” Docker์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹น๋˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉ

๐Ÿ›„ aux_addresse?
aux_addresse๋Š” ์‚ฌ์šฉ์ž๊ฐ€ keepํ•ด๋‘” IP๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
์ฆ‰, Docker๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” IP๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๋ฏธ๋ฆฌ ์Ÿ๊ฒจ๋†“๋Š” ๊ฒƒ์ด๋‹ค.

profile
๋ถ‰์€ ๋ฐฐ ์˜ค์ƒ‰ ๋”ฑ๋‹ค๊ตฌ๋ฆฌ ๊ฐœ๋ฐœ์ž ๐ŸฆƒCloud & DevOps

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