Tôi mới bắt đầu học Docker và có điều gì đó khá khó hiểu đối với tôi. Như tôi đã đọc trên trang web của Docker, một container khác với một máy ảo. Theo tôi hiểu, một container chỉ là một hộp cát bên trong mà toàn bộ hệ thống tập tin bị cô lập đang chạy.
Tôi cũng đã đọc rằng một container không cài đặt HĐH khách. Thay vào đó, nó dựa vào Kernel OS bên dưới.
Tất cả điều đó là tốt. Điều tôi bối rối là có những hình ảnh Docker được đặt tên theo hệ điều hành. Chúng tôi thấy những hình ảnh như Ubuntu, Debian, Fedora, CentOS, v.v.
Quan điểm của tôi là: những hình ảnh đó là gì? Việc tạo một thùng chứa dựa trên hình ảnh Debian khác nhau như thế nào so với việc tạo Máy ảo và cài đặt Debian?
Tôi nghĩ rằng các container không có hệ điều hành khách được cài đặt, nhưng khi chúng tôi tạo hình ảnh, chúng tôi dựa trên một số hình ảnh được đặt tên theo một hệ điều hành.
Ngoài ra, trong các ví dụ tôi thấy khi chúng tôi làm docker run ubuntu echo "hello world"
, có vẻ như chúng tôi đang tạo ra một VM với Ubuntu và làm cho nó chạy lệnh echo "hello world"
.
Theo cùng một cách khi chúng ta làm docker run -it ubuntu /bin/bash
, có vẻ như chúng ta đang tạo ra một VM với Ubuntu và truy cập nó bằng dòng lệnh.
Dù sao, những hình ảnh được đặt tên theo hệ điều hành là gì? Làm thế nào khác nhau để chạy một container với một trong những hình ảnh đó và quay VM với hệ điều hành khách tương ứng?
Ý tưởng là chúng ta chỉ chia sẻ kernel với HĐH máy chủ (và do đó chúng ta có quyền truy cập vào tài nguyên phần cứng máy bên dưới, không cần ảo hóa phần cứng), nhưng vẫn sử dụng các tệp và nhị phân của từng hệ thống khác nhau trên các container theo thứ tự để hỗ trợ bất cứ ứng dụng nào chúng ta muốn chạy?