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

Playbook debug: DNS, port, TCP

Tìm đúng lớp lỗi trước khi sửa image hay firewall.

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

Nắm bản chất

Khi API không gọi được database, kiểm tra theo thứ tự: hostname có phân giải không, DB container có Ready không, tiến trình có listen đúng port/interface không, network có chia sẻ không, rồi mới xem firewall và authentication.

Connection refused thường nghĩa là có phản hồi từ network stack rằng không có listener hoặc có reject. Timeout có thể liên quan routing, firewall hoặc service quá tải. Name or service not known gợi ý DNS hoặc sai tên.

Luồng hoạt động

DNS→socket listening→route→policy

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 compose ps
docker compose logs --tail=100 db
docker compose exec api getent hosts db
docker compose exec api sh -c 'cat /etc/resolv.conf'
docker network inspect PROJECT_default

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

✳

Cố tình đổi DB hostname sang tên không tồn tại, rồi quan sát sự khác biệt giữa lỗi DNS và lỗi authentication. Ghi lại thông điệp error cụ thể.

Lỗi dễ mắc

!

Không mở port database ra public interface để “khắc phục DNS”. Hướng xử lý đó vừa sai lớp lỗi vừa tăng attack surface.

Tự kiểm tra

Nên kiểm tra gì đầu tiên khi thông báo `Name or service not known`?Xem đáp án ↗

Tên service và DNS resolution trong network/container đang thực hiện request.

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 ↗