Blog
Thoughts on engineering, design, and building great products.
Docker Là Gì và Vì Sao Nên Dùng
Mở đầu series: Docker giải quyết vấn đề gì, khác máy ảo ra sao, các khái niệm cốt lõi (image, container, registry), và lộ trình học từ cơ bản tới Docker Swarm.
Kiến Trúc Docker: Client, Daemon, containerd và runc
Đi sâu vào kiến trúc Docker: client và daemon nói chuyện qua REST API, và bên dưới dockerd là containerd với runc. Hiểu điều gì thực sự xảy ra khi bạn gõ docker run, kèm sơ đồ minh họa và lệnh tự kiểm chứng.
Container Chạy Bằng Gì: Namespaces, Cgroups và Union Filesystem
Deep-dive lớp thấp nhất: ba tính năng của nhân Linux — namespaces (cô lập), cgroups (giới hạn tài nguyên) và union filesystem (layer) — biến một tiến trình bình thường thành container. Kèm sơ đồ và lệnh tự kiểm chứng.
Cài Đặt Docker và Chạy Container Đầu Tiên
Cài Docker theo hệ điều hành, rồi chạy container đầu tiên và nắm trọn vòng đời: run, ps, logs, exec, stop, rm. Kèm sơ đồ trạng thái container và phần dọn dẹp.
Image và Cơ Chế Layer: Pull, Tag, Docker Hub
Image đến từ đâu và gồm những gì: cách đọc tên image, registry Docker Hub, layer dùng chung giữa các image, digest, và quản lý image trên máy bằng pull/images/tag/rmi/history.
Viết Dockerfile và Build Cache
Tự dựng image cho ứng dụng của bạn: các lệnh Dockerfile cốt lõi, mỗi lệnh tạo một layer, và build cache hoạt động ra sao — vì sao đặt cài dependency trước copy code giúp build nhanh hơn nhiều.
Volumes và Bind Mount: Lưu Dữ Liệu Bền Vững
Dữ liệu trong container biến mất khi container bị xóa. Bài này giải quyết: named volume do Docker quản lý và bind mount gắn thẳng thư mục host, khi nào dùng cái nào, kèm ví dụ chứng minh dữ liệu sống sót.