CodeGym /Các khóa học /Docker SELF /Chuyển hướng cổng

Chuyển hướng cổng

Docker SELF
Mức độ , Bài học
Có sẵn

7.1 Cơ bản về chuyển tiếp cổng (Port forvarding)

Chuyển tiếp cổng là một tính năng quan trọng của Docker, cho phép các ứng dụng bên trong container được truy cập từ bên ngoài. Chức năng này cần thiết để kết nối đến các web server, cơ sở dữ liệu hoặc các dịch vụ khác chạy trong container, từ máy chủ host hoặc thậm chí từ các mạng khác.

Theo mặc định, các container hoạt động trong một mạng lưới tách biệt. Để làm cho dịch vụ bên trong container có thể truy cập, Docker chuyển tiếp các cổng từ container đến các cổng của máy chủ host.

Để chuyển tiếp cổng, sử dụng tham số -p hoặc --publish trong lệnh docker run.

Cú pháp


docker run -p [HOST_PORT]:[CONTAINER_PORT] [OPTIONS] IMAGE [COMMAND] [ARG...]

Trong đó:

  • HOST_PORT: Cổng trên máy chủ host, qua đó lưu lượng sẽ được truyền.
  • CONTAINER_PORT: Cổng bên trong container, nơi lưu lượng sẽ được chuyển tiếp.
  • OPTIONS: Các tham số bổ sung để cấu hình container.
  • IMAGE: Hình ảnh được sử dụng để tạo container.
  • COMMAND: Lệnh được thực thi bên trong container.
  • ARG...: Tham số cho lệnh.

Ví dụ sử dụng cơ bản

Trong ví dụ này, cổng 80 của container, nơi một web server Nginx đang chạy, được chuyển tiếp đến cổng 8080 của máy chủ host. Sau đó, bạn có thể mở web server trong trình duyệt tại địa chỉ http://localhost:8080.


docker run -d -p 8080:80 nginx

7.2 Các kiểu chuyển tiếp port khác

1. Chuyển tiếp nhiều port

Docker cho phép chuyển tiếp nhiều port một lúc. Để làm điều này, cần sử dụng nhiều tùy chọn -p.

Ví dụ

Trong ví dụ này, port 80 của container được chuyển tiếp sang port 8080 của host, và port 443 của container được chuyển tiếp sang port 8443 của host.



docker run -d -p 8080:80 -p 8443:443 nginx

2. Chuyển tiếp port với IP cụ thể

Bạn có thể chỉ định một địa chỉ IP cụ thể cho port chuyển tiếp. Điều này rất hữu ích khi máy host có nhiều giao diện mạng và bạn cần giới hạn truy cập vào container.

Ví dụ:

Trong ví dụ này, port 80 của container được chuyển tiếp sang port 8080 chỉ trên giao diện 127.0.0.1 của máy host. Điều này có nghĩa là dịch vụ chỉ có thể được truy cập từ chính máy host.


docker run -d -p 127.0.0.1:8080:80 nginx

3. Chuyển tiếp dải port

Nếu bạn cần chuyển tiếp nhiều port cùng lúc, Docker hỗ trợ làm việc với dải port.

Ví dụ:

Trong ví dụ này, các port từ 7000 đến 8000 của container được chuyển tiếp sang các port từ 7000 đến 8000 của máy host.


docker run -d -p 7000-8000:7000-8000 someimage

7.3 Các kịch bản sử dụng thực tế

1. Truy cập vào web server

Chuyển hướng port thường được dùng để cung cấp khả năng truy cập vào các web server chạy bên trong container.


docker run -d -p 8080:80 nginx 

Sau khi chạy lệnh này, web server Nginx, đang chạy trên cổng 80 của container, sẽ được truy cập qua cổng 8080 của máy chủ.

2. Truy cập vào cơ sở dữ liệu

Chuyển hướng port cũng rất tiện lợi để truy cập vào các cơ sở dữ liệu chạy trong container.


docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword postgres

Trong ví dụ này, PostgreSQL, đang chạy trên cổng 5432 của container, sẽ được truy cập qua cổng 5432 của máy chủ.

3. Kiểm thử và phát triển

Các container Docker thường được dùng để tạo môi trường kiểm thử cách ly. Chuyển hướng port cho phép các developer chạy và kiểm thử ứng dụng như khi chúng hoạt động trong môi trường thực tế.


docker run -d -p 8080:80 -p 8443:443 myapp

Trong ví dụ này, ứng dụng được kiểm thử trên các cổng 8080 và 8443, tương ứng với các cổng chuẩn được sử dụng trong môi trường làm việc.

7.4 Khuyến nghị bổ sung

1. Bảo vệ cổng

Khi chuyển hướng cổng, đừng quên về vấn đề an ninh. Các cổng mở có thể trở thành mục tiêu cho các cuộc tấn công. Chỉ chuyển hướng những cổng thực sự cần thiết và sử dụng bức tường lửa (firewall) để giới hạn quyền truy cập.

2. Bức tường lửa và NAT

Để tăng cường bảo vệ và quản lý lưu lượng, hãy sử dụng bức tường lửa và Network Address Translation (NAT). Điều này sẽ giúp giới hạn quyền truy cập vào các dịch vụ của bạn và kiểm soát các kết nối mạng.

3. Giám sát và nhật ký

Cấu hình giám sát và thu thập nhật ký để theo dõi lưu lượng trên các cổng được chuyển hướng. Điều này sẽ giúp phát hiện và phản ứng nhanh hơn với các hoạt động đáng ngờ.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION