Bridge network và port publishing
Đọc được đường đi host → container và phân biệt bind address.
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
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ẻ.
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Đố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 ↗