Mối quan hệ giữa hệ điều hành máy chủ docker và hệ điều hành hình ảnh cơ sở vùng chứa là gì?


122

Tôi không chắc mình đang hỏi đúng câu hỏi ... nhưng trong khi tôi đã đọc mọi thứ về docker mà tôi có thể thực hiện, tôi thấy rằng tôi có thể cài đặt Docker trên Ubuntu 12.04 (ví dụ) và sau đó tôi có thể cài đặt một vùng chứa Fedora hoặc một phiên bản ubuntu khác? (có một ví dụ trong đó người dùng đã cài đặt busybox trong vùng chứa.)

Và tất nhiên tôi có thể sai hoàn toàn.

Nhưng tôi mong đợi rằng có một mối liên hệ tạm thời giữa hệ thống cơ sở và thùng chứa.

xác định lại: mối quan hệ giữa hệ điều hành máy chủ và hệ điều hành của hình ảnh cơ sở vùng chứa là gì?

Câu trả lời:


100

Như đã đề cập bởi BraveNewCurrency, mối quan hệ duy nhất giữa hệ điều hành chủ và vùng chứa là Kernel.

Đó là một trong những điểm khác biệt chính giữa docker và các máy ảo 'thông thường', không có chi phí nào, mọi thứ diễn ra trực tiếp trong hạt nhân của máy chủ.

Đây là lý do tại sao bạn chỉ có thể chạy phân phối / nhị phân dựa trên Linux trong vùng chứa. Nếu bạn muốn chạy thứ gì đó khác, không phải là không thể, nhưng bạn sẽ cần một số loại ảo hóa bên trong vùng chứa (qemu, kvm, v.v.)

Docker quản lý hình ảnh là đại diện của hệ thống tệp. Bạn có thể cài đặt bất kỳ bản phân phối linux nào hoặc chỉ cần đặt các tệp nhị phân.

Thật vậy, để thuận tiện cho ví dụ, chúng tôi thường dựa vào các hình ảnh cơ sở, nhưng bạn cũng có thể tạo hình ảnh của mình mà không cần bất kỳ thư viện / tệp nhị phân phân phối nào. Bằng cách đó, bạn sẽ có một thùng chứa thực sự nhỏ nhưng đầy đủ chức năng.

Một điểm nữa liên quan đến bản phân phối: vì hạt nhân vẫn là hạt nhân của máy chủ lưu trữ, bạn sẽ không có bất kỳ mô-đun / bản vá lỗi hạt nhân cụ thể nào được cung cấp bởi bản phân phối.


2
vậy nếu hệ điều hành chủ là Ubuntu thì vùng chứa cũng sẽ là Ubuntu?
Richard

21
Nhân của vùng chứa sẽ là nhân từ ubuntu, nhưng không có gì khác. Bạn có thể dễ dàng chạy centos, Archlinux, debian hoặc bất kỳ bản phân phối dựa trên linux nào khác dưới dạng vùng chứa.
creack

37
Mặc dù thông tin này có thể được nêu trực tiếp / gián tiếp trên trang web của docker, nhưng tôi thực sự cảm thấy họ nên làm cho điều này rõ ràng hơn một chút. Tôi đã làm theo cách của mình thông qua trang chủ, tổng quan, hướng dẫn tương tác và hầu hết các hướng dẫn cơ bản. Mặc dù vậy, tôi đã nhầm lẫn về chủ đề này và bắt đầu cho rằng hiệu suất tốt nhất từ ​​docker (dựa trên sơ đồ kiến ​​trúc từ trang web) sẽ yêu cầu phải khớp trên hệ điều hành máy chủ và vùng chứa. Tôi mới làm quen với khái niệm "nhân linux" nên điều này không rõ ràng với tôi ngay lập tức. Biết được điều này ngay lập tức làm cho docker trở thành kẻ xấu.
ctrlplusb

2
Docker là một dự án khá phức tạp sử dụng các tính năng nâng cao. Tại một số điểm, chúng tôi cho rằng người dùng có một số kiến ​​thức như sự khác biệt giữa hệ điều hành và bản phân phối. Nếu bạn nghĩ rằng nó sẽ tăng thêm giá trị, thì tài liệu này là nguồn mở và bạn có thể gửi một yêu cầu kéo.
creack

3
Điều này dường như chỉ ra rằng chỉ các phần không gian người dùng của một hệ điều hành (thư viện, lệnh, ứng dụng) mới có thể được chứa. Nếu ứng dụng yêu cầu một bản sửa đổi hạt nhân khác (ví dụ: 3.10 so với 4.9) thì nó có thể không chạy được trong vùng chứa. Có đúng không?
David C.

23

Theo nghĩa đen, điểm chung duy nhất của chúng là nhân. Toàn bộ thế giới của họ (hệ thống tệp) nằm trong bộ chứa docker.


1

Có một sự cân nhắc khác - ngay cả khi cả hai hạt nhân giống nhau, sẽ có vấn đề nếu hệ điều hành máy chủ không hỗ trợ Docker, chẳng hạn như RHEL 6: https://access.redhat.com/solutions/1378023

Vì vậy, bạn sẽ không thể quay lên vùng chứa trên RHEL 6, ngay cả khi hình ảnh là Linux.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.