Docker Networks on Linux
Docker มีความสามารถในการจำลองระบบเครือข่ายภายใน Docker ซึ่งสามารถใช้เชื่อมต่อระหว่าง Container หลาย ๆ node ได้ โดยค่าเริ่มต้น Docker จะสร้าง default networks ให้ 3 ตัวคือ bridge
none
และ host
สามารถตรวจสอบ networks ทั้งหมดได้โดยการใช้คำสั่ง
ดูรายละเอียดของแต่ละ networks ด้วยคำสั่ง
ศึกษา docker networks เพิ่มเติมได้ที่ Docker Networks
ข้อดีของการใช้ docker networks
การกำหนดให้ container หลายๆ node ทำงานภายใต้ bridge networks ตัวเดียวกันจะทำให้แต่ละ container สามารถติดต่อหากันได้โดยการใช้ชื่อของ container แทน ip address ได้เลย
ใช้ได้กับ networks driver
bridge
เท่านั้น
ในการขั้นตอนการ Deploy application ด้วย Docker และ Docker compose สามารถกำหนดระบบเครือข่ายให้กับ containers ได้ สามารถทำตามขั้นตอนได้ดังนี้
Create Docker Networks
การสร้าง networks จะต้องมีการกำหนดค่าดังนี้
docker network create \
--driver=bridge \
--subnet=100.10.0.0/16 \
--ip-range=100.10.5.0/24 \
--gateway=100.10.0.1 \
[networks-name]
- driver กำหนดให้เป็น
driver
- subnet กำหนดให้เป็น
- ip-range กำหนดให้เป็น
- gateway กำหนดให้เป็น
Using created network
Using Docker
เพิ่มการตั้งค่า --network [network name]
ในขั้นตอนการใช้ docker run ...
docker run -d -p [port ที่ต้องการเข้าผ่าน http]:80 [port ที่ต้องการเข้าผ่าน https]:443 \
-e ASPNETCORE_ENVIRONMENT=Production \
--network [network-name] \
--name [container-name] [image registry address]:[tag]
Using Docker compose
เพิ่มการตั้งค่า networks ใน docker-compose สามารถทำได้โดยการเพิ่ม parameter networks
ภายใต้ container นั้น ๆ
services:
proxy:
build: ./proxy
networks:
- frontend
app:
build: ./app
networks:
- frontend
- backend
db:
image: postgres
networks:
- backend
networks:
frontend:
# Use a custom driver
driver: custom-driver-1
backend:
# Use a custom driver which takes special options
driver: custom-driver-2
driver_opts:
foo: "1"
bar: "2"