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ạ.

DevOps 30/08/2026 8 phút

Docker chạy 3 container trong nửa giây; Kubernetes mất 10,6 giây và ngốn thêm 743 MB trước khi làm gì — đây là thứ 743 MB đó mua được

Tôi dựng đúng một ứng dụng nginx ba bản bằng Docker thuần rồi bằng Kubernetes, và đo cả hai — kể cả cái giá. Docker thắng mọi chỉ số tốc độ và bộ nhớ. Rồi tôi giết một thứ đang chạy, và mọi thứ đảo chiều: Docker chạy thứ bạn bảo nó chạy, Kubernetes giữ thứ bạn khai là phải có.

DevOps 30/08/2026 9 phút

Tôi giết một node Kubernetes, ba pod chết theo — nhưng kubectl vẫn thản nhiên báo đủ 6 Running suốt gần mười phút; 'pod ma' và vì sao đếm Running là dối

kind dựng cụm 3 node trong 30 giây và 791 MB. Nhưng phép đo đáng nhớ nhất là khi tôi docker stop một worker: gần mười phút trôi qua, không pod nào được chuyển đi, và kubectl get pods vẫn báo đủ sáu Running — trong khi ba bản đã ngừng phục vụ từ giây thứ 61. Đây là lý do bảng theo dõi dựa trên đếm pod sẽ lừa bạn.

DevOps 30/08/2026 8 phút

Tôi tắt cả apiserver lẫn etcd của một cụm Kubernetes — bốn container nginx vẫn phục vụ bình thường; control plane chết không giết ứng dụng, nó giết khả năng tự chữa

Sơ đồ kiến trúc Kubernetes thì ở đâu cũng có. Tôi làm khác: tắt từng thành phần một trên cụm đang chạy rồi đo cái gì hỏng. Kết quả đáng nhớ nhất — mất control plane, mọi thứ vẫn chạy y như thường, cho tới đúng lần tiếp theo có một pod chết mà không ai thay nó. Và apiserver nặng gần gấp năm lần etcd.

DevOps 30/08/2026 8 phút

Hai container khác nhau trong một pod gọi nhau qua localhost — và 'kubectl delete pod' mất đúng bằng grace period dù ứng dụng tắt ngay lập tức hay bướng bỉnh không chịu chết

Câu 'pod là đơn vị nhỏ nhất, không phải container' nghe như chi tiết thuật ngữ. Đo thử thì ra hai điều thú vị: hai container trong một pod chung một IP và nói chuyện qua localhost, và thời gian xoá pod hoàn toàn không phụ thuộc việc ứng dụng tắt nhanh hay chậm — nó chỉ đo đúng terminationGracePeriodSeconds.