Phần 15 – host network trong docker

By | 30 January, 2020

Mục tiêu của hướng dẫn này là bắt đầu một container nginx liên kết trực tiếp với cổng 80 trên máy chủ chạy Docker. Từ việc kết nối mạng, đây là cùng một mức độ cô lập như thể tiến trình nginx đang chạy trực tiếp trên máy chủ Docker chứ không phải trong một container. Tuy nhiên, trong tất cả các cách khác, chẳng hạn như storage, namespace process và namespace user, process nginx vẫn được tách biệt khỏi máy chủ.

Điều kiện tiên quyết

  • Yêu cầu cổng 80 có sẵn trên máy chủ chạy Docker (cổng 80 chưa được sử dụng). Để làm cho Nginx lắng nghe trên một cổng khác, hãy xem tài liệu cho nginxImage
  • Network driver host chỉ hoạt động trên máy chủ Linux và không được hỗ trợ trên Docker Desktop cho Mac, Docker Desktop cho Windows hoặc Docker EE cho Windows Server.

Thủ tục

Tạo và bắt đầu container như một quá trình tách rời. Tùy chọn --rm để xóa bỏ các container khi nó thoát hoặc dừng để tránh bị rác. Tùy chọn -d để bắt đầu container ở chế độ nền (daemon).

docker run --rm -d --network host --name my_nginx nginx 

Truy cập Nginx bằng cách duyệt đến http://localhost:80/ .

Kiểm tra ngăn xếp mạng của bạn bằng các lệnh sau:

  • Kiểm tra tất cả các giao diện mạng và xác minh rằng một giao diện mới chưa được tạo.
ip addr show 
  • Xác minh tiến trình nào đang sử dụng với cổng 80, bằng cách sử dụng lệnh netstat. Bạn cần sử dụng sudo vì tiến trình được sở hữu bởi user Docker daemon và nếu không bạn sẽ không thể thấy tên hoặc PID của nó.
sudo netstat -tulpn | grep :80 

Dừng container. Nó sẽ được gỡ bỏ tự động khi nó được bắt đầu sử dụng tùy chọn--rm.

docker container stop my_nginx 

Tổng kết

Bạn đã hoàn thành việc sử dụng và thử nghiệm host network trong docker. Theo dõi blog để tìm hiểu thêm các bài viết khác.

Leave a Reply

avatar
  Subscribe  
Notify of