ข้ามไปที่เนื้อหา

Docker Networks on Linux

Docker มีความสามารถในการจำลองระบบเครือข่ายภายใน Docker ซึ่งสามารถใช้เชื่อมต่อระหว่าง Container หลาย ๆ node ได้ โดยค่าเริ่มต้น Docker จะสร้าง default networks ให้ 3 ตัวคือ bridge none และ host สามารถตรวจสอบ networks ทั้งหมดได้โดยการใช้คำสั่ง

docker networks ls

ดูรายละเอียดของแต่ละ networks ด้วยคำสั่ง

docker network inspect [network]

ศึกษา 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"