๋์ปค์ ๋คํธ์ํฌ ๊ด๋ จ ์ค์ ๋ฐ ์ธ๋ถ์ฌํญ์ ํ์ ํ๊ธฐ ์ํด์๋ Visual Studio Code(VS Code)์ Docker ์ต์คํ ์ ์ด ๋ ๋ซ๋ค.
๋ํ Docker Desktop
์์ Network๋ฅผ ํ์ธํ๋ ค๋ฉด ์ฌ๊ธฐ์๋ Extension์ ํตํด์ ์ถ๊ฐํด ์ค์ผํ๋ค.
Docker๋ ์ปจํ
์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์คํ ์์ค
ํ๋ซํผ์ด๋ค. ์ด๋ฌํ ์ปจํ
์ด๋๋ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํ๋๋ฉฐ, ์ด๋ ๊ฐ ์ปจํ
์ด๋๊ฐ
์์ฒด ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ IP ์ฃผ์๋ฅผ ๊ฐ์ง ์ ์์์ ์๋ฏธํ๋ค.
โข Docker ๋คํธ์ํฌ๋ ์ปจํ
์ด๋ ๊ฐ์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ์ปจํ
์ด๋๋ ๋
๋ฆฝ์ ์ผ๋ก ์คํ๋๋ฏ๋ก, ์๋ก ํต์ ํ๋ ค๋ฉด ๋คํธ์ํฌ๋ฅผ ํตํด์ผ ํ๋ค.
ํ์ฌ ๋์ปค ์์คํ ์ ์๋ ๋คํธ์ํฌ๋ฅผ ํ์ธํ ์ ์๋ค.
docker netwokr ls
๋ค์๊ณผ ๊ฐ์ด ํํฐ๋ฅผ ์ ์ฉํ ์๋ ์๋ค.
docker network ls --filter driver=bridge
โข ๋ธ๋ฆฌ์ง ๋คํธ์ํฌ๋ ๋์ปค๊ฐ ์ ๊ณตํ๋ ๋คํธ์ํฌ ๋๋ผ์ด๋ฒ ์ค ํ๋๋ก, ๊ฐ์
์ธํฐํ์ด์ค๋ฅผ ํตํด ์ปจํ
์ด๋๋ค์ ์ฐ๊ฒฐํ๋ค.
โข ๋์ปค๋ฅผ ์ค์นํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก docker0 ๋ผ๋ ๋ธ๋ฆฌ์ง ๋คํธ์ํฌ๊ฐ ์์ฑ๋๋ฉฐ, ์๋ก์ด
์ปจํ
์ด๋๋ค์ ์ด ๋คํธ์ํฌ์ ์๋์ผ๋ก ์ฐ๊ฒฐ๋๋ค.
โข ์ฌ์ฉ์๋ docker network ๋ช
๋ น์ด๋ฅผ ํตํด ์๋ก์ด ๋ธ๋ฆฌ์ง ๋คํธ์ํฌ๋ฅผ ์์ฑํ๊ฑฐ๋,
๊ธฐ์กด์ ๋ธ๋ฆฌ์ง ๋คํธ์ํฌ์ ์ปจํ
์ด๋๋ค์ ์ฐ๊ฒฐํ๊ฑฐ๋ ํด์ ํ ์ ์๋ค.
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 ํต์ ์ด ์ ์์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ ์ ์๋ค.
- ๊ธฐ์กด ์ปจํ ์ด๋์ ์๋ก์ด
web-net-3
์๋ธ๋ท(๋คํธ์ํฌ)๋ฅผ ์ถ๊ฐ.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์ publish๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ปจํ
์ด๋์ ๋คํธ์ํฌ ์ ๊ทผ์ฑ์
์ ์ดํ๊ธฐ ์ํจ์ด๋ค. expose๋ ์ปจํ
์ด๋๊ฐ ์ฌ์ฉํ๋ ํฌํธ๋ฅผ ๋ฌธ์ํํ๊ณ ,
publis๋ ์ปจํ
์ด๋์ ์๋น์ค๋ฅผ ์ธ๋ถ์ ๋
ธ์ถํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
docker run -d -p 8080:80 --name nginx nginx:latest
ํธ์คํธ์ 8080 ํฌํธ๋ฅผ ์ปจํ
์ด๋ ๋ด๋ถ์ 80 ํฌํธ๋ก ํฌ์๋ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ด๋ ํธ์คํธ์ 8080 ํฌํธ๋ก ๋ค์ด์ค๋ ์์ฒญ์ Docker ์ปจํ
์ด๋ ๋ด๋ถ์ 80 ํฌํธ๋ก ์ ๋ฌํ์ฌ ์ปจํ
์ด๋ ๋ด์ ์๋น์ค(์น ์๋ฒ)์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค.
Docker ๋คํธ์ํฌ์์ IP ์ฃผ์ ๋ฐ ๊ด๋ จ ์ค์ ์ ์๋์ผ๋ก ๊ตฌ์ฑํ ์ ์๋ ์์ฑ์ด๋ค.
driver
: ์ฌ์ฉ์ ์ ์ IPAM ๋๋ผ์ด๋ฒ๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Docker๋ ๋ด์ฅ๋ IPAM ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ค.
config
: IPAM ๊ตฌ์ฑ
subnet
: ์ปจํ
์ด๋์ ์๋ธ๋ท ๋ฒ์๋ฅผ ๊ตฌ์ฑip_range
: ์ปจํ
์ด๋์ ํ ๋นํ ์ ์๋ IP ์ฃผ์ ๋ฒ์๋ฅผ ์ง์ gateway
: ๋คํธ์ํฌ์ ๊ฒ์ดํธ์จ์ด ์ค์ aux_addresses
: ํน์ IP ์ฃผ์ ์ง์ ๊ณ ์ ๐ aux_addresse?
aux_addresse๋ ์ฌ์ฉ์๊ฐ keepํด๋ IP๋ฅผ ์๋ฏธํ๋ค.
์ฆ, Docker๊ฐ ์๋์ผ๋ก ์ฌ์ฉํ ์ ์๋ IP๋ก ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ์ค์ ํ๋ ์ฃผ์๋ฅผ ๋ฏธ๋ฆฌ ์๊ฒจ๋๋ ๊ฒ์ด๋ค.