Bài viết mới nhất

Tổng 2300 bài
DevOps 22/09/2026 5 phút

Container networking: gọi nhau bằng tên, và vì sao mạng bridge mặc định không có DNS

Trong một mạng bridge tuỳ chỉnh, container gọi nhau bằng tên (Docker có DNS nội bộ); nhưng mạng bridge MẶC ĐỊNH thì không — gọi bằng tên báo bad address. Bài này chạy thật: container gọi nhau qua tên trên mạng riêng, lỗi trên mạng mặc định, và -p publish cổng để host vào được container (curl trả 200).

DevOps 22/09/2026 6 phút

Volume vs bind mount: vì sao dữ liệu ghi trong container biến mất khi xoá

Dữ liệu ghi vào lớp container là tạm — xoá container là mất sạch, kể cả database. Bài này chạy thật: ghi /data.txt rồi xoá container thì file biến mất; named volume giữ dữ liệu qua vòng đời container; và bind mount cho host với container thấy cùng file hai chiều. Cùng cách chọn volume hay bind mount cho từng việc.

DevOps 22/09/2026 6 phút

Bảo mật container: vì sao container mặc định chạy root, và ba lớp phòng thủ giảm rủi ro

Mặc định container chạy dưới quyền root — kẻ khai thác được app là có root trong container. Bài này đo thật ba lớp phòng thủ: --user chạy non-root (ghi /etc bị Permission denied), --cap-drop ALL bỏ quyền đặc quyền (root cũng không chown được), và --read-only khoá rootfs (không ghi được binary). Phòng thủ theo lớp để một container bị chiếm không thành thảm hoạ.

Hệ thống 22/09/2026 5 phút

Rò rỉ file descriptor: vì sao app chạy tốt vài giờ rồi chết vì "Too many open files"

App chạy ổn lúc đầu rồi bỗng crash sau vài giờ với 'Too many open files'? Gần như luôn là rò rỉ file descriptor — mở file/socket mà quên đóng. Bài này chạy thật: mô phỏng rò rỉ đến khi chạm ulimit và nhận Errno 24, so với bản dùng with (fd phẳng lì ở 4), và cách đếm fd qua /proc/pid/fd để phát hiện sớm.

Hệ thống 22/09/2026 5 phút

strace: nhìn thấy chương trình thật sự nói gì với kernel — khi log im lặng

App chạy lỗi mà log không nói gì? strace cho bạn thấy MỌI syscall chương trình gọi — mở file nào, đọc bao nhiêu byte, kết nối đi đâu. Bài này chạy thật: strace cat phơi bày openat/read/write, bắt file thiếu qua ENOENT, lọc chỉ syscall mạng, và gắn vào tiến trình đang chạy — công cụ debug mạnh nhất khi bạn không có mã nguồn hay log.

Hệ thống 22/09/2026 5 phút

/proc/<pid>: cửa sổ nhìn vào tiến trình đang sống — không cần dừng hay strace

Muốn biết một tiến trình đang mở file nào, dùng bao nhiêu RAM thật, chạy từ binary nào — mà không làm nó chậm đi? Đọc /proc/<pid>. Bài này chạy thật: cmdline cho lệnh đầy đủ, status cho VmRSS (RAM thật), fd/ cho file descriptor đang mở, cwd/exe cho thư mục và binary, maps cho bản đồ bộ nhớ — hệ thống file ảo do kernel sinh ra.