Container khác máy ảo như thế nào?
Không chỉ học định nghĩa: chọn đúng đơn vị triển khai cho từng công việc.
Nắm bản chất
Container đóng gói ứng dụng và userspace dependencies, nhưng chia sẻ kernel của máy chủ. Máy ảo thông thường có guest OS và kernel riêng. Sự khác biệt giúp container khởi động nhanh, dùng ít overhead cho nhiều workloads; đổi lại, ranh giới bảo mật phụ thuộc vào kernel, namespaces, cgroups và runtime.
Image là bản đóng gói bất biến theo lớp; container là một instance có trạng thái chạy được tạo từ image. Một image có thể chạy thành nhiều containers độc lập. Đừng xem container như máy chủ nhỏ phải chạy init, SSH và cron cho mọi thứ.
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 version
docker info
docker run --rm hello-world
docker run --rm alpine:3.20 sh -c 'echo hello from container'
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
Chạy hello-world, ghi ra tên client/server Docker Engine và
quan sát --rm xóa container sau khi lệnh hoàn tất. Dùng
docker image ls để thấy image có thể vẫn còn sau khi container
được xóa.
Lỗi dễ mắc
Không đưa trạng thái cần lưu giữ vào writable layer rồi coi như đã được backup. Containers là thực thể có thể bị thay thế.
Tự kiểm tra
Xóa container có đồng nghĩa xóa image hay named volume không?Xem đáp án ↗
Không. Container, image và volume là những resource khác nhau; tác động cụ thể phụ thuộc lệnh và flags.
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 ↗