Pourquoi la version du noyau ne correspond pas à la version d'Ubuntu dans un conteneur Docker?


11

J'ai un conteneur Docker construit à partir d'Ubuntu 14.10. Lorsque je me connecte au conteneur pour vérifier la version d'Ubuntu et la version du noyau, je vois ce qui suit:

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

Je pensais qu'Ubuntu 14.10 était censé être la version 3.16 du noyau (comme indiqué ici ), alors pourquoi ai-je la version 3.13.0-24 du noyau générique?

La raison pour laquelle je demande, c'est parce qu'il y a un correctif dans 3.13.0-29-generic que j'aimerais avoir (c'est-à-dire avoir fallocate travaillant sur AUFS dans mon conteneur docker) qui est discuté ici .


Le conteneur fonctionne-t-il sur Ubuntu Trusty? Si oui, ce serait la raison.
saiarcot895

Réponses:


12

De quoi est Docker? :

POIDS LÉGER

Les conteneurs fonctionnant sur une seule machine partagent le même noyau de système d'exploitation; ils démarrent instantanément et utilisent moins de RAM. Les images sont construites à partir de systèmes de fichiers en couches et partagent des fichiers communs, ce qui rend l'utilisation du disque et les téléchargements d'images beaucoup plus efficaces.

Les conteneurs s'exécutent sur le noyau du système d'exploitation hôte. Dans votre cas, l'hôte peut être un Ubuntu 14.04 (exécutant le noyau d'origine) ou Ubuntu 12.04 (exécutant le noyau à partir de la pile d' activation matérielle de trusty ).

Si l'hôte est Ubuntu 14.04, vous pouvez installer le noyau 3.16:

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

Ou noyau 3.19:

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

Pour Ubuntu 12.04, le noyau 3.13 est le dernier officiel.


Voulez-vous dire que je devrais mettre à niveau le noyau hôte? Il n'y a aucun moyen de simplement mettre à jour le noyau du conteneur?
jcm

5
@jcm Il n'y a pas de noyau dans un conteneur. Même si vous installez un noyau, il ne sera pas chargé au démarrage du conteneur. Le but même d'un conteneur est d'isoler les processus sans avoir besoin d'exécuter un nouveau noyau. C'est aussi pourquoi les conteneurs sont limités à Linux. Si vous devez exécuter un autre système d'exploitation ou une autre version du noyau, vous devez utiliser la virtualisation.
Eric Carvalho
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.