2015-09-24 12 views
7

Trong Docker, hệ điều hành khách chia sẻ cùng một hạt nhân như hệ điều hành máy chủ có.Điều gì có nghĩa là chia sẻ hạt nhân trong Docker?

Ai đó có thể giải thích thêm về nó.

Hãy để tôi có hệ điều hành CentOS có một số phiên bản hạt nhân, khi chúng ta kéo ảnh ubuntu thì nó có hạt nhân khác nhau, vậy làm sao chúng ta có thể có cùng hạt nhân?

Trả lời

10

khi chúng ta kéo hình ảnh ubuntu sau đó nó có kernel khác nhau

Không nó không: nó không có phần kernel: nó dựa trên hạt nhân của chủ nhà (một trong những hoạt động cơ Docker) cho tất cả system calls.

Như đã đề cập trong "Docker vs Virtualization":

Ban đầu Docker được xây dựng như một lớp trừu tượng trên Linux Container (LXC). Bản thân LXC chỉ là một API cho các tính năng ngăn chặn Linux.
Bắt đầu với Docker 0.9, LXC không phải là mặc định nữa và đã được thay thế bằng một thư viện tùy chỉnh (libcontainer) được viết bằng Go. Lợi thế chung của libcontainer là một giao diện nhất quán hơn đối với hạt nhân trên các bản phân phối Linux khác nhau. Bí quyết duy nhất là nó yêu cầu Linux 3.8 trở lên.

Xem thêm tại "Why Understanding User Space vs. Kernel Space Matters".
Đồng thời "Operating System Containers vs. Application Containers":

Thùng chứa là sản phẩm ảo hóa hệ điều hành. Chúng cung cấp một môi trường ảo nhẹ để nhóm và cô lập một tập hợp các quy trình và tài nguyên như bộ nhớ, CPU, đĩa, vv, từ máy chủ và bất kỳ vùng chứa nào khác.
Cách ly đảm bảo rằng bất kỳ quy trình nào bên trong vùng chứa không thể thấy bất kỳ quy trình hoặc tài nguyên nào bên ngoài vùng chứa.

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-virtualization.jpg

container OS là môi trường ảo mà chia sẻ hạt nhân của hệ điều hành máy chủ nhưng cung cấp không gian sử dụng tách biệt

https://risingstack-blog.s3-eu-west-1.amazonaws.com/2015/05/os-containers.jpg

Như đã đề cập trong "Do all Linux distros use the same kernel?", một hạt nhân có thể được chia sẻ qua distro, ngay cả khi mỗi distro có cấu hình riêng của hạt nhân.

+0

Von, bạn có thể vui lòng giải thích thêm về cách nó dựa vào hạt nhân chủ, nếu nó đang kéo hạt nhân riêng của mình – gaurav

+0

@gaurav thì * không * kéo hạt nhân riêng của nó: nó dựa vào hạt nhân đã có. – VonC

+0

Voc, nhưng chúng ta biết centos, ubuntu có hạt nhân khác nhau thì làm thế nào nó có thể dựa vào hạt nhân chủ, làm thế nào ubuntu có thể sử dụng hạt nhân centos – gaurav

0

Docker đã sử dụng LinuX Containers (LXC) trước đó, nhưng chuyển sang runC (trước đây gọi là libcontainer), chạy trong cùng hệ điều hành với máy chủ của nó. Điều này cho phép nó chia sẻ rất nhiều tài nguyên hệ điều hành máy chủ. Nó cũng sử dụng hệ thống tập tin lớp như AuFS. Nó cũng quản lý mạng cho bạn.

AuFS là hệ thống tệp được phân lớp, vì vậy bạn có thể có phần chỉ đọc và phần viết và kết hợp chúng lại với nhau. Vì vậy, bạn có thể có các phần phổ biến của hệ điều hành là chỉ đọc, được chia sẻ giữa tất cả các vùng chứa của bạn và sau đó cung cấp cho mỗi vùng chứa gắn kết riêng của nó để viết.

Vì vậy, giả sử bạn có hình ảnh vùng chứa có kích thước 1GB. Nếu bạn muốn sử dụng một máy ảo đầy đủ, bạn sẽ cần phải có 1GB lần x số máy ảo mà bạn muốn. Với LXC và AuFS bạn có thể chia sẻ số lượng lớn của 1GB và nếu bạn có 1000 vùng chứa, bạn vẫn chỉ có thể có ít hơn 1 GB dung lượng cho hệ điều hành vùng chứa, giả sử tất cả chúng đều chạy cùng một hình ảnh OS.

Các vấn đề liên quan