Cách chạy nhiều vùng chứa Docker trên các IP khác nhau

Docker giúp dễ dàng chạy ứng dụng bằng các giải pháp đám mây không máy chủ, nhưng nhiều người sẽ thích quản lý nhiều vùng chứa chạy trên một vài máy mạnh. Trong trường hợp này, sử dụng nhiều địa chỉ IP có thể là một cách tuyệt vời để quản lý nhiều dịch vụ trên cùng một cổng.

Giao diện mạng hoạt động như thế nào?

Linux sử dụng các giao diện mạng để đại diện cho phần cứng vật lý, cũng như tạo các thành phần mạng ảo như VLAN, cầu nối hoặc bí danh. Nếu bạn liệt kê tất cả các thiết bị trên hệ thống của mình với ip addr showbạn sẽ tìm thấy nhiều giao diện khác nhau như eth0eno1 đại diện cho các kết nối thực tế.

Bạn Đang Xem: Cách chạy nhiều vùng chứa Docker trên các IP khác nhau

Địa chỉ IP là một hệ thống riêng biệt với các giao diện mạng, nhưng về cơ bản, bạn có thể có nhiều địa chỉ IP được định cấu hình trên một giao diện duy nhất, cho phép bạn liên kết các dịch vụ với các ổ cắm mạng cho mỗi IP:PORT sự kết hợp.

Điều này hoạt động tốt với Docker, cho phép bạn xử lý mạng ở cấp Docker thay vì cấp ứng dụng. Với Docker, ứng dụng bên trong vùng chứa chỉ có thể liên kết với “cổng 80”, được Docker ánh xạ tới một địa chỉ IP cụ thể trên máy chủ.

Điều này làm cho việc tách lớp ứng dụng khỏi máy chủ đang chạy nó dễ dàng hơn nhiều. Ví dụ: bạn có thể có nhiều dịch vụ API khác nhau, tất cả đều chạy trên cùng một máy mà không cần định cấu hình các vùng chứa bên dưới.

Xem Thêm : Cách tìm các mẫu phù hợp trên nhiều dòng với grep

Đối với Docker, địa chỉ IP nằm trên giao diện hệ thống nào không thực sự quan trọng, vì mạng nội bộ của Docker sẽ xử lý việc này cho bạn, miễn là bạn khởi chạy các vùng chứa với cấu hình chính xác.

Chạy nhiều Docker Dịch vụ trên cùng một máy chủ

Chạy một vùng chứa trên một địa chỉ cụ thể khá dễ dàng, tùy thuộc vào cách bạn khởi chạy nó. Về cơ bản, hầu hết các vùng chứa Docker đều có các cổng của chúng được định cấu hình với host:container định dạng. Ví dụ, 5000:80 sẽ lấy cổng 80 của container và cung cấp nó từ cổng 5000 của máy chủ.

Tuy nhiên, bạn thực sự có thể liên kết trực tiếp các socket, nghĩa là thay vì 5000bạn có thể thay thế một IP:PORT ghép nối, sử dụng ba dấu hai chấm cho toàn bộ liên kết:

docker run -it -d ipaddress:hostport:containerport --name web nginx

Vì vậy, ví dụ: bạn có thể có hai vùng chứa NGINX trên các IP khác nhau, như vậy (lưu ý rằng Docker cần các tên vùng chứa riêng biệt):

docker run -it -d 123.0.0.1:80:80 --name web nginx
docker run -it -d 123.0.0.2:80:80 --name web2 nginx

Nếu bạn đang sử dụng Docker Compose, cấu hình cũng tương tự. bên trong ports cho dịch vụ, bạn có thể sử dụng cùng một cú pháp để liên kết với các địa chỉ cụ thể.

version: "3"
services:
  nginx:
    image: nginx
    restart: always  
    ports: 
      - "123.0.0.1:80:80"

Trong cả hai trường hợp, bạn có thể tạo nhiều dịch vụ liên kết với cổng máy chủ lưu trữ 80, miễn là các dịch vụ không lắng nghe trên cùng một địa chỉ IP.

Xem Thêm : Cách sửa máy tính bị lỗi phần mền

Tuy nhiên, nếu bạn đang làm điều này, bạn sẽ muốn đảm bảo rằng không có vùng chứa nào đang nghe chỉ cổng — đây sẽ là một cấu hình sai, vì bỏ qua địa chỉ IP sẽ có nghĩa là nó sẽ lắng nghe tất cả các địa chỉ cho giao diện đó.

Làm thế nào để bạn có được nhiều địa chỉ IP?

Hầu hết các máy chủ chỉ có một địa chỉ IP duy nhất, vì vậy bạn có thể phải tự thiết lập thêm các địa chỉ khác.

Việc thiết lập nhiều IP trên mỗi máy chủ sẽ phụ thuộc vào máy chủ lưu trữ bạn đang sử dụng. Ví dụ: AWS có dịch vụ “Elastic IP”, được sử dụng miễn phí nếu bạn đang sử dụng một IP cho mỗi máy. Tuy nhiên, nếu bạn muốn mua thêm địa chỉ IP đàn hồi, bạn có thể liên kết chúng với bất kỳ máy chủ nào. Bạn sẽ phải trả 3,65 đô la một tháng cho mỗi cái.

Một số dịch vụ sẽ cho phép bạn mua địa chỉ IP một lần, như OVH, cho phép mua các khối có kích thước lên đến / 24.

Nếu bạn muốn mua các khối địa chỉ IP lớn, liền kề để bạn thực sự sở hữu, bạn có thể thực hiện việc này thông qua các công ty môi giới khác nhau, mặc dù điều này thường phát sinh một khoản phí lớn và chủ yếu dành cho các tổ chức lớn.

Sau khi bạn có địa chỉ IP, nhà cung cấp dịch vụ đám mây của bạn có thể trỏ chúng đến địa chỉ của bạn hay không. Tuy nhiên, bạn phải định cấu hình giao diện mạng của mình để sử dụng nó, bằng cách sử dụng một công cụ như netplan.


Nguồn: https://maytinhvang.com
Danh mục: TIN HỌC

Bài viết liên quan

0903064855
chat-active-icon