Docker Networking nâng cao: Overlay và Service Discovery

Photo of author

Văn Ngọc Tân

Docker Networking nâng cao: Overlay và Service Discovery

Bạn có biết?

Hãy tưởng tượng bạn có một hệ thống đường cao tốc ảo kết nối các container chạy trên nhiều Docker hosts khác nhau – như thể tất cả đều nằm trong cùng một mạng LAN vậy. Đó chính xác là những gì Overlay Network mang lại. Khi ứng dụng của bạn cần mở rộng ra nhiều server, Overlay Network cho phép các container “nói chuyện” với nhau như thể chúng đang ở trong cùng một máy.

Docker Network Types

Bridge Network (mặc định)

  • Driver: bridge
  • Dùng cho: single-host
  • Tạo network ảo riêng, các container kết nối qua virtual bridge

Host Network

  • Driver: host
  • Dùng cho: containers cần performance cao
  • Container dùng network của host trực tiếp, bỏ qua Docker network isolation

Overlay Network

  • Driver: overlay
  • Dùng cho: multi-host (Docker Swarm)
  • Tạo virtual LAN xuyên qua nhiều Docker hosts
  • Yêu cầu Swarm mode hoạt động

Macvlan

  • Driver: macvlan
  • Dùng cho: Legacy apps cần direct network access
  • Container có MAC address riêng, xuất hiện như physical device trên network

Overlay Network trong Swarm

Khởi tạo Swarm

# Khởi tạo Swarm (leader)
docker swarm init

# Tham gia Swarm với token
docker swarm join --token SWMTKN-1-xxxxx node-ip:2377

Tạo Overlay Network

docker network create -d overlay my-overlay

Sử dụng trong Service

services:
  web:
    image: nginx
    networks:
      - my-overlay
networks:
  my-overlay:
    driver: overlay

Service Discovery

DNS-based discovery

Container có thể resolve theo service name – không cần IP cứng. Ví dụ: từ web container, bạn có thể ping db để kết nối đến database service.

Embedded DNS

Docker có built-in DNS server với địa chỉ 127.0.0.11. Tất cả container tự động được cấu hình để resolve qua Docker DNS.

VIP (Virtual IP)

Load balancing tự động qua VIP với round-robin mặc định. Service có một IP ảo duy nhất, Docker tự động phân phối requests đến các containers.

DNS Round Robin

# Kích hoạt DNS round-robin
docker service create --dns-opt round-robin --name my-service my-image

Mỗi container có nhiều A records, client có thể chọn random IP.

Docker Overlay Network - Data Center Server Cables
Overlay Network kết nối các container qua nhiều hosts như một mạng LAN ảo

Các lệnh quản lý network

docker network ls

docker network ls

Liệt kê tất cả networks.

docker network inspect

docker network inspect my-overlay

Xem chi tiết network bao gồm containers kết nối.

docker network create

docker network create -d bridge my-bridge
docker network create -d overlay my-overlay

Tạo custom network với driver tương ứng.

docker network rm / docker network prune

docker network rm my-network
docker network prune

Xóa network cụ thể hoặc dọn dẹp networks không sử dụng.

docker network connect / disconnect

docker network connect my-network container-name
docker network disconnect my-network container-name

Kết nối/ngắt kết nối container với network.

Ví dụ: Multi-host Web App

version: "3.8"
services:
  web:
    image: nginx
    networks:
      - frontend
  api:
    image: node
    networks:
      - backend
networks:
  frontend:
    driver: overlay
  backend:
    driver: overlay

Web service và API service chạy trên các hosts khác nhau nhưng vẫn giao tiếp được qua Overlay Network.

Best Practices

  1. Dùng custom networks – tách biệt frontend/backend
  2. Overlay cho multi-host – cần Swarm mode hoạt động
  3. Service discovery tự động – dùng service name thay vì IP cứng
  4. External access – dùng ingress network để publish services
  5. Macvlan cho legacy apps – khi cần direct network access

Bước tiếp theo

Tiếp theo, chúng ta sẽ tìm hiểu về Docker Logging và Monitoring – cách thu thập logs và theo dõi performance của containers trong production.

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận