2015-09-24 13 views
7

In Docker, il sistema operativo guest condivide lo stesso kernel del sistema operativo host.Cosa si intende per kernel condiviso in Docker?

Qualcuno può elaborare più su di esso.

Consentitemi di avere centos OS che ha una versione del kernel, quando tiriamo l'immagine di Ubuntu allora ha un kernel diverso, allora come possiamo dire che hanno lo stesso kernel?

risposta

10

quando l'immagine di Ubuntu tiriamo allora hanno differenti kernel

No non è così: non ha la parte del kernel: si basa sul kernel dell'host (quello in esecuzione del motore finestra mobile) per tutti system calls.

Come menzionato in "Docker vs Virtualization":

Inizialmente Docker stato costruito come un livello di astrazione in cima Linux Container (LXC). LXC è di per sé solo un'API per le funzionalità di contenimento di Linux.
A partire da Docker 0.9, LXC non è più l'impostazione predefinita ed è stata sostituita con una libreria personalizzata (libcontainer) scritta in Go. Il vantaggio complessivo di libcontainer è un'interfaccia più coerente con il kernel su varie distribuzioni Linux. L'unico risultato è che richiede Linux 3.8 e versioni successive.

Altre informazioni "Why Understanding User Space vs. Kernel Space Matters".
anche "Operating System Containers vs. Application Containers":

I contenitori sono i prodotti di virtualizzazione del sistema operativo. Forniscono un ambiente virtuale leggero che raggruppa e isola un insieme di processi e risorse come memoria, CPU, disco, ecc. Dall'host e da qualsiasi altro contenitore.
L'isolamento garantisce che tutti i processi all'interno del contenitore non possano vedere processi o risorse all'esterno del contenitore.

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

contenitori OS sono ambienti virtuali che condividono il kernel del sistema operativo host, ma forniscono l'isolamento spazio utente

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

Come accennato in "Do all Linux distros use the same kernel?", un kernel può essere condiviso attraverso la distribuzione, anche se ogni distro ha una propria configurazione del kernel.

+0

Von, puoi approfondire come si basa sul kernel host, se sta estraendo il proprio kernel – gaurav

+0

@gaurav è * non * che tira il proprio kernel: si basa sul kernel già presente. – VonC

+0

Voc, ma sappiamo centos, ubuntu ha un kernel diverso, come può contare sul kernel host, su come ubuntu può usare il kernel di centos – gaurav

0

Docker utilizzava LinuX Containers (LXC) in precedenza, ma passava a runC (precedentemente noto come libcontainer), che viene eseguito nello stesso sistema operativo del suo host. Ciò consente di condividere molte risorse del sistema operativo host. Utilizza anche filesystem a livelli come AuFS. Gestisce anche il networking per te.

AuFS è un file system a livelli, quindi è possibile avere una parte di sola lettura e una parte di scrittura e unire quelli insieme. Quindi potresti avere le parti comuni del sistema operativo in sola lettura, che sono condivise tra tutti i tuoi contenitori, e quindi dare a ogni contenitore il proprio supporto per la scrittura.

Quindi supponiamo di avere un'immagine del contenitore di 1 GB. Se si desidera utilizzare una VM completa, è necessario disporre di 1 GB x numero di VM che si desidera. Con LXC e AuFS puoi condividere la maggior parte del 1GB e se hai 1000 contenitori potresti avere solo poco più di 1 GB di spazio per il sistema operativo dei contenitori, supponendo che tutti stiano utilizzando la stessa immagine del sistema operativo.

Problemi correlati