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
nginx
Image - 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ụngsudo
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.