Bài 03: Networking trong docker

  • Đăng bởi JP
  • 30/11/2024

Trong các ứng dụng thực tế, các container thường cần giao tiếp với nhau hoặc với thế giới bên ngoài. Networking trong Docker cung cấp một cách mạnh mẽ và linh hoạt để kết nối các container. Bài viết này sẽ giúp bạn hiểu cách mạng trong Docker hoạt động và cách sử dụng các loại mạng phù hợp với nhu cầu của bạn.


Các loại Network trong Docker

Docker hỗ trợ nhiều loại network, mỗi loại phù hợp với một số trường hợp sử dụng cụ thể. Dưới đây là các loại network phổ biến:

1. Bridge Network

  • Mặc định: Khi bạn chạy một container mà không chỉ định network, nó sẽ được kết nối vào một Bridge Network mặc định.
  • Chức năng: Cho phép các container trên cùng một máy chủ giao tiếp với nhau. Container có thể liên lạc qua địa chỉ IP hoặc tên container.
  • Thích hợp cho: Các ứng dụng đơn giản, chạy trên cùng một máy chủ.
Bridge Network

Bridge Network

Lệnh tạo Bridge Network:

docker network create my_bridge_network

Chạy container trên mạng cầu nối tùy chỉnh:

docker run --network my_bridge_network --name app_container my_app_image

2. Host Network

  • Chức năng: Container chia sẻ network với máy chủ host. Container không có network riêng và sử dụng IP và port của máy chủ.
  • Thích hợp cho: Các ứng dụng yêu cầu hiệu suất mạng cao, như ứng dụng cần truy cập trực tiếp tài nguyên mạng của máy chủ.
  • Lưu ý: Cẩn trọng khi sử dụng, vì việc chia sẻ network có thể gây ra xung đột port.

Chạy container trên Host Network:

docker run --network host my_app_image

3. None Network

  • Chức năng: Container không có mạng. Thích hợp cho các ứng dụng không cần kết nối mạng.
  • Thích hợp cho: Ứng dụng chỉ xử lý dữ liệu cục bộ hoặc kiểm thử tính năng.

Chạy container với None Network:

docker run --network none my_app_image

4. Overlay Network

  • Chức năng: Dùng để kết nối các container chạy trên nhiều máy chủ khác nhau. Thường sử dụng trong môi trường Docker Swarm hoặc Kubernetes.
  • Thích hợp cho: Các ứng dụng phân tán, hệ thống microservices.
Overlay Network

Overlay Network

Lệnh tạo Overlay Network:

docker network create --driver overlay my_overlay_network

Kết nối giữa các container

Sử dụng tên container

Docker DNS tự động tạo các tên container để chúng có thể giao tiếp bằng tên thay vì địa chỉ IP.

Ví dụ:

  • Chạy container Redis:
    docker run --name redis_container --network my_bridge_network redis
    
  • Chạy ứng dụng kết nối Redis bằng tên container:
    docker run --network my_bridge_network my_app_image
    

Trong ứng dụng, bạn chỉ cần kết nối đến redis_container thay vì sử dụng địa chỉ IP.


Kiểm tra và quản lý network Docker

  • Liệt kê các network:

    docker network ls
    
  • Xem thông tin chi tiết của một network:

    docker network inspect <network_name>
    
  • Xóa một network:

    docker network rm <network_name>
    

Kết nối container đến một network hiện có

Bạn có thể kết nối một container đang chạy đến một mạng:

docker network connect <network_name> <container_name>

Ngắt kết nối container khỏi network:

docker network disconnect <network_name> <container_name>

Tổng Kết

Network trong Docker là một phần quan trọng, giúp bạn quản lý giao tiếp giữa các container và các dịch vụ khác nhau. Việc lựa chọn loại network phù hợp sẽ phụ thuộc vào kiến trúc ứng dụng của bạn.

Trong bài tiếp theo, chúng ta sẽ tìm hiểu về Docker Volume – cách quản lý dữ liệu trong Docker một cách hiệu quả.


Hẹn gặp bạn trong bài viết tiếp theo về Docker Volume!


Toàn bộ series


Trân trọng,
JP

Thảo luận trên tinh thần học hỏi