Perché la versione del kernel non corrisponde alla versione di Ubuntu in un contenitore Docker?


11

Ho un contenitore Docker creato da Ubuntu 14.10. Quando accedo al contenitore per controllare la versione di Ubuntu e la versione del kernel vedo quanto segue:

root@~$>> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.10
Release:    14.10
Codename:   utopic   

root@~$>> uname -a
    Linux ambiata-aws 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Ho pensato che Ubuntu 14.10 doveva essere la versione 3.16 del kernel (come indicato qui ), quindi perché ho una versione del kernel 3.13.0-24-generica?

Il motivo per cui lo sto chiedendo è perché esiste una patch in 3.13.0-29-generico che vorrei avere (ovvero avere fallocate funzionante su AUFS nel mio contenitore docker) che è discusso qui .


Il contenitore è in esecuzione su Ubuntu Trusty? Se è così, sarebbe per questo.
saiarcot895,

Risposte:


12

Da cosa è Docker? :

LEGGERO

I contenitori in esecuzione su una singola macchina condividono lo stesso kernel del sistema operativo; si avviano istantaneamente e usano meno RAM. Le immagini sono costruite da filesystem a più livelli e condividono file comuni, rendendo l'utilizzo del disco e i download di immagini molto più efficienti.

I contenitori vengono eseguiti sul kernel del sistema operativo host. Nel tuo caso, l'host potrebbe essere un Ubuntu 14.04 (che esegue il kernel originale) o un Ubuntu 12.04 (che esegue il kernel dallo stack di abilitazione hardware di trusty ).

Se l'host è Ubuntu 14.04 è possibile installare il kernel 3.16:

sudo apt-get install linux-generic-lts-utopic

O kernel 3.19:

sudo apt-get install linux-generic-lts-vivid

Per Ubuntu 12.04, il kernel 3.13 è l'ultimo ufficiale.


Vuoi dire che dovrei aggiornare il kernel host? Non c'è modo di aggiornare il kernel del container?
jcm,

5
@jcm Non c'è kernel all'interno di un contenitore. Anche se si installa un kernel, non verrà caricato all'avvio del contenitore. Lo scopo stesso di un contenitore è isolare i processi senza la necessità di eseguire un nuovo kernel. Questo è anche il motivo per cui i contenitori sono limitati a Linux. Se è necessario eseguire un altro sistema operativo o un'altra versione del kernel, è necessario utilizzare la virtualizzazione.
Eric Carvalho,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.