CodeGym /Các khóa học /Docker SELF /Sử dụng mạng người dùng

Sử dụng mạng người dùng

Docker SELF
Mức độ, Bài học
Có sẵn

5.1 Các loại mạng tùy chỉnh cơ bản

Mạng tùy chỉnh trong Docker cung cấp khả năng linh hoạt để cấu hình và quản lý tương tác mạng giữa các container. Nó cho phép cô lập các container, tổ chức tương tác giữa chúng và tạo ra các cấu trúc mạng phức tạp. Trong bài giảng này, chúng ta sẽ tìm hiểu cách tạo và cấu hình mạng tùy chỉnh trong Docker, cũng như các ví dụ về cách sử dụng chúng.

Các loại mạng tùy chỉnh cơ bản

Docker hỗ trợ một số loại mạng tùy chỉnh, mỗi loại có các đặc điểm riêng và được thiết kế cho các kịch bản sử dụng khác nhau:

  1. Bridge (mạng cầu nối): cung cấp sự cô lập và kết nối giữa các container trên cùng một host. Loại mạng này được sử dụng mặc định cho các ứng dụng cục bộ không yêu cầu tương tác bên ngoài host.
  2. Overlay (mạng overlay): được thiết kế để kết nối các container hoạt động trên các host khác nhau trong cụm Docker Swarm hoặc Kubernetes. Chúng đảm bảo khả năng mở rộng cao và an toàn cho các ứng dụng phân tán.
  3. Macvlan: cho phép các container sử dụng trực tiếp giao diện mạng vật lý của host. Điều này hữu ích đối với các ứng dụng mạng có yêu cầu hiệu suất cao, cũng như các trường hợp cần liên kết với các địa chỉ MAC cụ thể. Các container trong mạng Macvlan có thể tương tác với các thiết bị khác trong mạng vật lý như các nút độc lập.
  4. Host (mạng host): các container sử dụng stack mạng của host, loại bỏ chi phí trên mạng ảo hóa nhưng giảm đi phần cô lập. Loại mạng này phù hợp cho các ứng dụng cần hiệu suất mạng tối đa.

5.2 Tạo và sử dụng mạng cầu (bridge)

Mạng cầu (bridge) là loại mạng tùy chỉnh phổ biến nhất và được sử dụng để cô lập các container trên một máy chủ. Các container được kết nối với cùng một mạng bridge có thể tương tác với nhau qua các địa chỉ IP và tên host.

Tạo một mạng bridge tùy chỉnh

Để tạo một mạng bridge tùy chỉnh, hãy sử dụng lệnh docker network create:

Terminal

docker network create --driver bridge my_bridge_network

Khởi chạy container trong mạng tùy chỉnh

Khởi chạy các container với kết nối đến mạng đã tạo:

Terminal

docker run -d --name container1 --network my_bridge_network nginx

docker run -d --name container2 --network my_bridge_network busybox sleep 1000

Kiểm tra kết nối giữa các container

Bạn có thể sử dụng lệnh ping để kiểm tra kết nối giữa các container:

Terminal

docker exec container2 ping -c 4 container1

Nếu các container được kết nối đúng vào mạng my_bridge_network, lệnh ping sẽ thành công.

5.3 Mạng tùy chỉnh trong Docker Compose

Ví dụ sử dụng mạng tùy chỉnh trong Docker Compose

Docker Compose giúp đơn giản hóa việc tạo và quản lý mạng cho các ứng dụng đa container. Bạn có thể định nghĩa mạng tùy chỉnh trong file docker-compose.yml.

Ví dụ file docker-compose.yml:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_bridge_network

  app:
    image: myapp:latest
    networks:
      - my_bridge_network

networks:
  my_bridge_network:
    driver: bridge

Chạy Docker Compose:

Terminal

docker compose up -d

Trong ví dụ này, cả hai dịch vụ (webapp) đều được kết nối với mạng tùy chỉnh my_bridge_network.

5.4 Cấu hình và sử dụng mạng macvlan

Mạng macvlan cho phép container sử dụng trực tiếp giao diện mạng vật lý của host, điều này có thể hữu ích cho các ứng dụng yêu cầu hiệu suất mạng cao. Container trong mạng này nhận được địa chỉ IP riêng trong phạm vi subnet đã chỉ định, làm cho chúng hiển thị trong cùng mạng với host.

Tạo mạng macvlan

Terminal

docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 my_macvlan_network

Trong lệnh này:

  • --subnet: xác định subnet nơi các container sẽ hoạt động.
  • --gateway: đặt cổng gateway cho các container.
  • -o parent: chỉ định giao diện mạng của host mà mạng sẽ được liên kết.

Chạy container trong mạng macvlan

Terminal

docker run -d --name container1 --network my_macvlan_network nginx

docker run -d --name container2 --network my_macvlan_network busybox sleep 1000

Trong ví dụ này, cả hai container đều được kết nối với mạng my_macvlan_network và có quyền truy cập vào mạng bên ngoài thông qua giao diện vật lý eth0.

5.5 Ví dụ sử dụng trong Docker Compose

Bạn cũng có thể sử dụng mạng macvlan trong Docker Compose. Ví dụ:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_macvlan_network
        
networks:
  my_macvlan_network:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1

Chạy Docker Compose:

Terminal

docker compose up -d

Trong ví dụ này, mạng my_macvlan_network cho phép dịch vụ web tương tác với các thiết bị trong subnet 192.168.1.0/24, bao gồm cả host.

Hướng dẫn thực hành:

  • Cấu hình truy cập: Đảm bảo rằng router của bạn hoặc quản trị viên mạng cho phép sử dụng subnet được chỉ định trong cấu hình macvlan.
  • Cách ly: Nếu bảo mật quan trọng, hãy sử dụng VLAN để phân đoạn mạng, để các container chỉ truy cập được tài nguyên cần thiết.
  • Kiểm tra: Sau khi cấu hình, hãy kiểm tra kết nối giữa các container và mạng ngoài bằng các lệnh ping hoặc curl.

5.6 Ví dụ sử dụng mạng cho microservices

Hãy xem ví dụ, nơi chúng ta có frontend, backend và cơ sở dữ liệu, chúng được cô lập trong các mạng khác nhau, nhưng vẫn đảm bảo tương tác thông qua sự giao thoa giữa các mạng.

Tệp docker-compose.yml

Yaml

version: '3.8'

services:
  frontend:
    image: myfrontend:latest
    networks:
      - front-tier
      - back-tier
        
  backend:
    image: mybackend:latest
    networks:
      - back-tier
      - db-tier
        
  database:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    networks:
      - db-tier
        
networks:
  front-tier:
    driver: bridge
  back-tier:
    driver: bridge
  db-tier:
    driver: bridge

Chạy Docker Compose:

Terminal

docker compose up -d 

Trong ví dụ này:

  • Dịch vụ frontend được kết nối với các mạng front-tierback-tier, cho phép nó tương tác với cả khách hàng bên ngoài lẫn backend.
  • Dịch vụ backend được kết nối với các mạng back-tierdb-tier, cho phép nó tương tác cả với frontend và cơ sở dữ liệu.
  • Dịch vụ database chỉ được kết nối với mạng db-tier, giúp cô lập cơ sở dữ liệu khỏi truy cập bên ngoài.

Khuyến nghị thực tế:

  • Sử dụng cô lập: Phân tách các mạng giúp hạn chế quyền truy cập của các dịch vụ vào cơ sở dữ liệu hoặc các tài nguyên quan trọng khác.
  • Kiểm tra kết nối: Đảm bảo rằng các dịch vụ có thể tương tác với nhau qua các mạng chung, sử dụng các lệnh như ping hoặc curl.
  • Tối ưu hóa: Sử dụng mạng overlay nếu dự án của bạn yêu cầu làm việc trong một cluster hoặc trên nhiều host.

Ví dụ này minh họa cách tạo cô lập mạng và đồng thời đảm bảo sự tương tác giữa các tầng khác nhau của ứng dụng.

3
Nhiệm vụ
Docker SELF, mức độ, bài học
Đã khóa
Tạo và kiểm tra mạng bridge
Tạo và kiểm tra mạng bridge
3
Nhiệm vụ
Docker SELF, mức độ, bài học
Đã khóa
Sử dụng mạng trong Docker Compose
Sử dụng mạng trong Docker Compose
3
Nhiệm vụ
Docker SELF, mức độ, bài học
Đã khóa
Tạo mạng macvlan
Tạo mạng macvlan
3
Nhiệm vụ
Docker SELF, mức độ, bài học
Đã khóa
Cài đặt mạng cho các microservices
Cài đặt mạng cho các microservices
1
Khảo sát/đố vui
, cấp độ , bài học
Không có sẵn
Cài đặt mạng Docker
Cài đặt mạng Docker
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION