Binding Ports
Các container Docker có thể kết nối với bên ngoài mà không cần cấu hình gì thêm, nhưng từ bên ngoài mặc định không thể kết nối với các container Docker.
Nó hoạt động thế nào
Một bridge network được tạo (có tên bridge
) khi bạn cài đặt Docker. Mọi kết nối gửi đi bắt nguồn từ không gian IP của máy chủ; Docker tạo ra một iptables
masquerading rule tùy chỉnh .
Forward everything
Nếu bạn dùng -P
( hoặc --publish-all=true
) vào docker run
, Docker xác định mọi port mà Dockerfile mở ra (bạn có thể xem port nào bằng cách nhìn vào các dòng EXPOSE
). Docker cũng tìm thấy các port bạn tiếp xúc với --expose 8080
(giả sử bạn muốn expose port 8080). Docker ánh xạ tất cả các port này vào một port máy chủ trong một dải port nhất định epehmeral port range
. Bạn có thể tìm thấy cấu hình cho các port này (thường là 32768 đến 61000) /proc/sys/net/ipv4/ip_local_port_range
.
Port được expose thế nào
Sử dụng lệnh docker port
để kiểm tra xem các port được tạo ra ánh xạ như thế nào.
Forward có chọn lọc
Bạn cũng có thể chỉ định các port. Khi làm như vậy, bạn không cần sử dụng các port từ ephemeral port range
. Giả sử bạn muốn expose port 8080 của container (port http tiêu chuẩn) trên port 80 của máy chủ (giả sử rằng port đó không được sử dụng). Nối -p 80:8080
(hoặc --publish=80:8080
) vào lệnh docker run
của bạn . Ví dụ:
docker run -p 80:8080 nginx ## OR ## docker run --publish=80:8080 nginx
IP và port chuyển tiếp tùy chỉnh
Theo mặc định, Docker expose các port container đến địa chỉ IP 0.0.0.0
(cái này khớp với bất kỳ IP nào trên hệ thống). Nếu bạn thích, bạn có thể chỉ định 1 ip cụ thể.Ví dụ, Để liên kết trên địa chỉ IP 10.0.0.3
, port máy chủ 80
và port container 8080
:
docker run -p 10.0.0.3:80:8080 nginx