Warum stimmt die Kernel-Version nicht mit der Ubuntu-Version in einem Docker-Container überein?

11

Ich habe einen Docker-Container aus Ubuntu 14.10. Wenn ich mich beim Container anmelde, um die Ubuntu-Version und die Kernel-Version zu überprüfen, sehe ich Folgendes:

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

Ich dachte, dass Ubuntu 14.10 die Kernel-Version 3.16 sein sollte (wie hier angegeben ). Warum habe ich also die Kernel-Version 3.13.0-24-generic?

Der Grund , warum ich frage ist , weil es ein Patch in 3.13.0-29-generic ist , dass ich möchte (das heißt, auf AUF fallocate Arbeits mit in meinem Docker Container) , die diskutiert wird hier .

jcm
quelle
Läuft der Container unter Ubuntu Trusty? Wenn ja, wäre das der Grund.
saiarcot895

Antworten:

12

Von Was ist Docker? ::

LEICHT

Container, die auf einem einzelnen Computer ausgeführt werden, verwenden denselben Betriebssystemkern. Sie starten sofort und verbrauchen weniger RAM. Bilder werden aus geschichteten Dateisystemen erstellt und verwenden gemeinsame Dateien, wodurch die Festplattennutzung und das Herunterladen von Bildern wesentlich effizienter werden.

Container werden auf dem Kernel des Host-Betriebssystems ausgeführt. In Ihrem Fall kann der Host ein Ubuntu 14.04 (mit dem ursprünglichen Kernel) oder ein Ubuntu 12.04 (mit dem Kernel über den Hardware-Aktivierungsstapel von Trusty) sein.

Wenn der Host Ubuntu 14.04 ist, können Sie Kernel 3.16 installieren:

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

Oder Kernel 3.19:

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

Für Ubuntu 12.04 ist Kernel 3.13 der neueste offizielle.

Eric Carvalho
quelle
Meinst du, ich müsste den Host-Kernel aktualisieren? Es gibt keine Möglichkeit, nur den Kernel des Containers zu aktualisieren.
Jcm
5
@jcm In einem Container befindet sich kein Kernel. Selbst wenn Sie einen Kernel installieren, wird dieser beim Start des Containers nicht geladen. Der eigentliche Zweck eines Containers besteht darin, Prozesse zu isolieren, ohne dass ein neuer Kernel ausgeführt werden muss. Aus diesem Grund sind Container auch auf Linux beschränkt. Wenn Sie ein anderes Betriebssystem oder eine andere Kernelversion ausführen müssen, müssen Sie die Virtualisierung verwenden.
Eric Carvalho