4.1 Các khái niệm cơ bản về xuất bản cổng
Xuất bản cổng của container trong Docker cho phép các dịch vụ chạy bên trong container có thể được truy cập từ mạng bên ngoài hoặc từ host. Đây là một phần quan trọng khi cấu hình ứng dụng đa-container vì nó cho phép tương tác với các dịch vụ như web server, cơ sở dữ liệu và các ứng dụng mạng khác. Trong bài giảng này, chúng ta sẽ tìm hiểu cách xuất bản cổng cho container và cấu hình quyền truy cập vào các dịch vụ.
Các khái niệm cơ bản về xuất bản cổng
- Mapping cổng: ánh xạ cổng từ host tới cổng của container.
- Tham số
-p/--publish
: được sử dụng để chỉ định ánh xạ cổng khi khởi chạy container. - Tham số
-P/--publish-all
: tự động gán cổng host cho tất cả cổng của container được export.
Ví dụ sử dụng tham số -p
Khi khởi chạy container bạn có thể dùng tùy chọn -p
để ánh xạ cổng từ host đến cổng của container. Cú pháp lệnh:
docker run -d -p <host_port>:<container_port> <image>
Ví dụ 1: Xuất bản cổng cho web server Nginx
Chạy một container với Nginx và xuất bản cổng 80 của container sang cổng 8080 của host.
Bây giờ Nginx sẽ có thể truy cập tại địa chỉ http://localhost:8080.
docker run -d -p 8080:80 --name mynginx nginx
Ví dụ 2: Xuất bản nhiều cổng
Bạn có thể xuất bản nhiều cổng bằng cách chỉ định nhiều tùy chọn -p
.
Trong ví dụ này, Nginx sẽ có thể truy cập qua HTTP trên cổng 8080 và qua HTTPS trên cổng 8443.
docker run -d -p 8080:80 -p 8443:443 --name mynginx nginx
Ví dụ sử dụng tham số -P
Tham số -P
tự động xuất bản tất cả các cổng được chỉ định trong Dockerfile hoặc cấu hình của container, sang các cổng ngẫu nhiên trên host.
Ví dụ:
docker run -d -P --name mynginx nginx
Để biết các cổng đã được chỉ định là gì, hãy sử dụng lệnh docker port
:
docker port mynginx
Dữ liệu xuất ra sẽ có dạng như sau:
80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769
4.2 Xuất bản cổng trong Docker Compose
Để chỉ định các cổng trong Docker Compose, sử dụng directive ports
trong file docker-compose.yml
.
Ví dụ về file docker-compose.yml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
- "8443:443"
Khởi động Docker Compose:
docker compose up -d
Bây giờ Nginx sẽ có sẵn tại các địa chỉ http://localhost:8080 và https://localhost:8443.
4.3 Các tham số bổ sung để công bố cổng
1. Giới hạn địa chỉ IP
Bạn có thể giới hạn quyền truy cập vào cổng container bằng cách chỉ định địa chỉ IP của host.
Ví dụ:
Trong ví dụ này, Nginx chỉ có thể truy cập được từ host cục bộ qua địa chỉ http://127.0.0.1:8080.
docker run -d -p 127.0.0.1:8080:80 --name mynginx nginx
2. Sử dụng phạm vi cổng
Bạn có thể chỉ định phạm vi cổng để công bố.
Ví dụ:
docker run -d -p 8080-8081:80-81 --name mynginx nginx
Lời khuyên thực tế:
- Chỉ công bố các cổng cần thiết: Chỉ công bố các cổng thực sự cần thiết để truy cập vào các dịch vụ, nhằm giảm thiểu các lỗ hổng tiềm ẩn.
- Sử dụng firewall: Cấu hình firewall để giới hạn quyền truy cập vào các cổng được công bố từ các địa chỉ IP đáng tin cậy mà thôi.
- Giám sát và ghi log: Sử dụng các công cụ giám sát và ghi log để theo dõi truy cập vào các cổng được công bố và phát hiện hoạt động đáng ngờ.
GO TO FULL VERSION