CHƯƠNG 03 · Docker Networking•BÀI 09 / 80

Bridge network và port publishing

Đọc được đường đi host → container và phân biệt bind address.

Nền tảng◷ 4 phút đọc1/4 trong chương

Nắm bản chất

Docker bridge network cung cấp kết nối giữa containers và host thông qua virtual ethernet/bridge và các quy tắc forwarding. -p 8080:80 publish container port 80 ra host port 8080; nếu bind mặc định trên mọi interfaces, service có thể tiếp xúc với mạng ngoài dự kiến.

Với lab, bind 127.0.0.1:8080:80 để chỉ mở trên loopback host. Container cần lắng nghe 0.0.0.0 (hoặc IP phù hợp) bên trong network namespace nếu client từ bên ngoài container cần kết nối.

Luồng hoạt động

Browser→host:published-port→container:port

Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?

Lệnh & cấu hình mẫu

docker network create handbook-net
docker run -d --name site --network handbook-net   -p 127.0.0.1:8080:80 nginx:stable-alpine
docker port site
docker inspect site --format '{{json .NetworkSettings.Ports}}'
docker rm -f site
docker network rm handbook-net

Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.

Bài tập 10–20 phút

✳

Truy cập curl http://127.0.0.1:8080 từ host. Kiểm tra docker port site. Giải thích sự khác nhau giữa port 8080 và 80.

Lỗi dễ mắc

!

Không mở trực tiếp Postgres/Redis lên 0.0.0.0 chỉ để tiện debug, nhất là trên cloud VPS có public IP.

Tự kiểm tra

`localhost` trong API container có trỏ vào Postgres container khác không?Xem đáp án ↗

Không. Đó là loopback của chính API container; dùng service name/hostname trên network chia sẻ.

TÀI NGUYÊN ĐI KÈM

Học thêm qua lab

Bài học nền tảng có thể thực hiện trực tiếp bằng các lệnh trên; bảng tra cứu nhanh giúp ôn tập.

→ Mở bảng lệnh tra cứu nhanh
NGUỒN CHÍNH THỨC

Đối chiếu tài liệu gốc

Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.

Mở tài liệu chính thức ↗