2015-09-24 20 views
7

W Dockerze system operacyjny gościa ma takie samo jądro, jak system operacyjny.Co oznacza wspólne jądro w Dockerze?

Czy ktoś może rozwinąć więcej na ten temat.

Mam centos os, które mają trochę wersji jądra, kiedy ściągamy obraz z ubuntu, to ma inne jądro, więc jak możemy powiedzieć, że mają to samo jądro?

Odpowiedz

10

kiedy ciągnąć ubuntu obraz to ma inne jądro

Wcale nie: nie ma części jądra: opiera się na jądrze przyjmującego (jednym pracującym silniku doker) dla wszystkich system calls.

Jak wspomniano w "Docker vs Virtualization":

Początkowo dokowanym zbudowany jako warstwa abstrakcji pod Linux pojemników (LXC). Sam LXC to tylko API dla funkcji zabezpieczających systemu Linux.
Począwszy od Docker 0.9, LXC nie jest już domyślny i został zastąpiony niestandardową biblioteką (libcontainer) zapisaną w Go. Ogólnie zaletą libcontainer jest bardziej spójny interfejs do Kernela w różnych dystrybucjach Linuksa. Jedynym problemem jest to, że wymaga systemu Linux w wersji 3.8 lub wyższej.

Zobacz więcej na "Why Understanding User Space vs. Kernel Space Matters".
także "Operating System Containers vs. Application Containers":

Pojemniki są produktami wirtualizacji systemów operacyjnych. Zapewniają lekkie środowisko wirtualne, które grupuje i izoluje zestaw procesów i zasobów, takich jak pamięć, procesor, dysk itp., Z hosta i innych kontenerów.
Izolacja gwarantuje, że wszelkie procesy w kontenerze nie mogą wyświetlić żadnych procesów ani zasobów poza kontenerem.

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

pojemniki systemowe są środowisk wirtualnych, które dzielą jądro systemu operacyjnego hosta ale zapewniają izolację przestrzeni użytkownika

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

Jak wspomniano w "Do all Linux distros use the same kernel?" jądro może być udostępniane w dystrybucji, nawet jeśli każda dystrybucja ma własną konfigurację jądra.

+0

Von, czy mógłbyś bardziej szczegółowo opisać, jak polega on na jądrze hosta, jeśli pobiera własne jądro? – gaurav

+0

@gaurav to * nie * ciągnie własne jądro: opiera się na jądrze już obecnym. – VonC

+0

Voc, ale wiemy, centos, ubuntu ma inne jądro niż jak może polegać na jądrze hosta, jak ubuntu może używać jądra centos – gaurav

0

Docker wcześniej korzystał z LinuX Containers (LXC), ale przełączył się na runC (wcześniej znany jako libcontainer), który działa w tym samym systemie operacyjnym, co jego host. Dzięki temu może współdzielić wiele zasobów systemu operacyjnego hosta. Używa również warstwowych systemów plików takich jak AuFS. Zarządza także tworzeniem sieci dla ciebie.

AuFS to warstwowy system plików, więc możesz mieć część tylko do odczytu i część do zapisu, i scalić je ze sobą. Więc możesz mieć wspólne części systemu operacyjnego jako tylko do odczytu, które są wspólne dla wszystkich twoich kontenerów, a następnie każdy pojemnik powinien mieć własny uchwyt do pisania.

Załóżmy, że masz obraz pojemnika o rozmiarze 1 GB. Jeśli chcesz korzystać z pełnej maszyny wirtualnej, musisz mieć 1 GB x liczbę maszyn wirtualnych, które chcesz. Dzięki LXC i AuFS możesz udostępnić większą część 1 GB, a jeśli masz 1000 kontenerów, możesz mieć tylko nieco ponad 1 GB miejsca na system operacyjny kontenerów, zakładając, że wszystkie działają z tym samym obrazem systemu operacyjnego.