Skip to content
An`s Weblog
Go back

Exposing Container Ports

Mục tiêu bài học

Gán nhiều loại port (TCP, UDP)

1. Tạo container nginx không gán port

docker run -d nginx
docker container ls
curl localhost         # Connection refused

Vì sao?

Container đang mở port 80, nhưng chưa map nó ra ngoài host.

Kiểm tra IP container:

docker inspect <container_id>
curl <container_ip>   #  Truy cập được

2. Dùng -expose: Chỉ mở cổng trong nội bộ

docker container run -d --expose 3000 nginx

Điều này chỉ cho phép cổng có thể được map, không tự động publish.

Kiểm tra:

docker container ls

3. Dùng p: Map port host → container

docker container run -d -p 80:3000 nginx

Cổng 80 (host) map vào cổng 3000 (container)

curl localhost:3000   #  Không có tiến trình nào ở port 3000

Giải thích: Container không có ứng dụng nào đang lắng nghe tại 3000.

4. Map đúng cổng có tiến trình (vd: nginx cổng 80)

docker container run -d -p 8080:80 nginx
curl localhost:8080   #  Hiện trang Welcome của nginx

5. Map nhiều loại giao thức (TCP/UDP)

docker container run -d \
  -p 8081:80/tcp \
  -p 8081:80/udp nginx

Dùng -p nhiều lần để map nhiều cổng hoặc nhiều giao thức.

6. Random map cổng với P

docker container run -d -P nginx
docker container ls

Docker tự chọn cổng trên host (vd: 32768 → 80 container)


7. Kiểm tra port với docker container port

docker container port <container_name or id>

Ví dụ:

80/tcp -> 8081
80/udp -> 8081

Tổng kết nhanh

Lệnh / FlagChức năng
--exposeMở cổng container nhưng không map
-p x:yMap cổng x của host → y container
-PRandom map cổng host đến cổng container
docker container portXem danh sách cổng đã map

Note:


Share this post:

Previous Post
Executing Container Commands
Next Post
Creating Containers