Phần 13 – Docker network

By | 30 January, 2020

Tổng quát

Một trong những lý do khiến các container và service của Docker rất mạnh là bạn có thể kết nối chúng lại với nhau hoặc kết nối chúng với khối lượng công việc không phải của Docker. Các container và service của Docker thậm chí không cần phải biết rằng chúng được triển khai trên Docker hay không. Cho dù máy chủ Docker của bạn chạy Linux, Windows hoặc kết hợp cả hai, bạn có thể sử dụng Docker để quản lý chúng theo cách không có hiểu biết về nền tảng.

Chủ đề này xác định một số khái niệm Network Docker cơ bản và chuẩn bị cho bạn thiết kế và triển khai các ứng dụng của mình để tận dụng tối đa các khả năng này.

Hầu hết các nội dung này áp dụng cho tất cả các cài đặt Docker. Tuy nhiên, một vài tính năng nâng cao chỉ dành cho khách hàng của Docker EE.

Mô hình Container Networking

CONTAINER NETWORKING MODEL (CNM)
  • Sandbox: chứa các config của một container network stack. Điều này bao gồm việc quản lý container interface, bảng định tuyến (routing table) và cài đặt DNS. Việc triển khai Sandbox có thể trên không gian mạng Linux, một FreeBSD Jail,… Sandbox có thể có nhiều endpoint vào từ nhiều network.
  • Endpoint: kết nối giữa Sandbox với network
  • Network: là tập hợp các endpoint và chúng được kết nối với nhau. implement của network có thể là Linux bridge, VLAN,…

Container Network Model (CNM) cung cấp cho ta hai kiểu interface để có thể nối và mở nhằm thêm chức năng, hiển thị hoặc kiểm soát network.

1. Network Drivers: Docker Network Drivers cung cấp implement giúp cho network hoạt động. Nhiều Network Drivers có thể được sử dụng đồng thời trên Docker Engine hoặc Cluster cụ thể. Nhưng chỉ có thể khởi tạo thông qua một Network Drivers duy nhất. Và chúng được chia làm hai loại :

  • Native Drivers: là phần native của Docker Engine và được cung cấp bởi Docker.
  • Remote Drivers: được tạo bởi cộng đồng và các nhà cung cấp khác. Drivers này có thể được sử dụng để cung cấp tích hợp với phần mềm và phần cứng đương nhiệm. Người dùng cũng có thể tạo drivers riêng trong trường hợp họ muốn chức năng cụ thể mà drivers hiện tại không hỗ trợ.

2. IPAM Drivers: là drivers quản lý địa chỉ IP gốc cung cấp subnet hoặc địa chỉ IP mặc định cho network và endpoint. Địa chỉ IP cũng có thể được gán thủ công thông qua các lệnh tạo network, container và service. IPAM Drivers cũng tồn tại và cung cấp tích hợp cho các công cụ IPAM hiện có.

Phạm vi của chủ đề này

Chủ đề này không đi sâu vào chi tiết dành riêng cho hệ điều hành về cách thức hoạt động của Network Docker, vì vậy bạn sẽ không tìm thấy thông tin về cách Docker thao tác iptables các quy tắc trên Linux hoặc cách nó thao tác các quy tắc định tuyến trên máy chủ Windows và bạn sẽ không tìm thấy thông tin chi tiết về cách thức Docker hình thành và đóng gói các gói hoặc xử lý mã hóa. Xem Docker và iptables và Docker Reference Architecture: Designing Scalable, Portable Docker Container Networks để biết chi tiết kỹ thuật sâu hơn nhiều.

Network driver

Hệ thống của Docker có thể cắm, sử dụng driver. Một số driver tồn tại mặc định và cung cấp chức năng Network lõi:

docker network overview
  • Bridge: driver Network mặc định. Nếu bạn không chỉ định driver, đây là loại Network bạn đang tạo. Network Bridge thường được sử dụng khi các ứng dụng của bạn chạy trong các Container độc lập cần liên kết với nhau.
  • Host: Đối với các container độc lập, hãy xóa cách ly Network giữa container và máy chủ Docker và sử dụng trực tiếp Network của máy chủ. host chỉ dùng được trên linux và không có sẵn trên windows và linux.
  • Overlay: Các overlay Network kết nối nhiều daemon Docker với nhau và cho phép các dịch vụ swarm liên lạc với nhau. Bạn cũng có thể sử dụng các overlay Network để tạo điều kiện liên lạc giữa dịch vụ swarm và container độc lập hoặc giữa hai container độc lập trên các daemon Docker khác nhau. Chiến lược này loại bỏ sự cần thiết phải thực hiện định tuyến cấp hệ điều hành giữa các container này .
  • Macvlan: Network Macvlan cho phép bạn gán địa chỉ MAC cho Container, làm cho nó xuất hiện dưới dạng thiết bị vật lý trên Network của bạn. Trình Docker daemon định tuyến lưu lượng đến các container theo địa chỉ MAC của chúng. Sử dụng macvlan driver đôi khi là lựa chọn tốt nhất khi xử lý các ứng dụng cũ dự kiến ​​sẽ được kết nối trực tiếp với Network vật lý, thay vì được định tuyến qua stack Network của máy chủ Docker.
  • None: Đối với container này, vô hiệu hóa tất cả các Network. Thường được sử dụng cùng với driver Network tùy chỉnh. nonekhông có sẵn cho các swarm service. 
  • Plugin Network : Bạn có thể cài đặt và sử dụng plugin Network của bên thứ ba với Docker. Các plugin này có sẵn từ Docker Hub hoặc từ các nhà cung cấp bên thứ ba. Xem tài liệu của nhà cung cấp để cài đặt và sử dụng một plugin Network nhất định.

Tóm tắt driver Network

  • Network Bridge do người dùng định nghĩa là tốt nhất khi bạn cần nhiều container để giao tiếp trên cùng một máy chủ Docker.
  • Network host là tốt nhất khi Network không bị cô lập khỏi máy chủ Docker, nhưng bạn muốn các khía cạnh khác của container bị cô lập.
  • Network overlay là tốt nhất khi bạn cần các container chạy trên nhiều máy chủ Docker khác nhau để liên lạc hoặc khi nhiều ứng dụng hoạt động cùng nhau bằng các dịch vụ swarm.
  • Network Macvlan là tốt nhất khi bạn di chuyển từ thiết lập VM hoặc cần các Container của bạn trông giống như máy chủ vật lý trên Network của bạn, mỗi máy chủ có một địa chỉ MAC duy nhất.
  • Các plugin Network của bên thứ ba cho phép bạn tích hợp Docker với các Network stack chuyên dụng.

Hướng dẫn về Network

Bây giờ bạn đã hiểu những điều cơ bản về Network Docker, hãy hiểu sâu hơn bằng cách sử dụng các hướng dẫn sau:

Leave a Reply

avatar
  Subscribe  
Notify of