λ컀μ λ€νΈμν¬ κ΄λ ¨ μ€μ λ° μΈλΆμ¬νμ νμ νκΈ° μν΄μλ 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λ‘ μ¬μ©μκ° μλμΌλ‘ μ€μ νλ μ£Όμλ₯Ό 미리 μ겨λλ κ²μ΄λ€.
Sprunki Retake κ° μ»¨ν μ΄λλ λ 립λ λ€νΈμν¬ νκ²½μ κ°μ§λ―λ‘ λ€λ₯Έ 컨ν μ΄λμ μν₯μ λ°μ§ μκ³ μμ νκ² μ΄μλ μ μμ΅λλ€.
μλ νμΈμ! Docker 곡λΆνλ€κ° μ°μ°ν λ€μ΄μλλ° λΈλ‘κ·Έ μ λ¦¬κ° λ무 μλμ΄μλ€μ! μ’μ κΈ κ°μ¬ν©λλ€π