Mengapa versi kernel tidak cocok dengan versi Ubuntu di wadah Docker?

11

Saya memiliki wadah Docker yang dibangun dari Ubuntu 14.10. Ketika saya masuk ke wadah untuk memeriksa versi Ubuntu dan versi kernel saya melihat yang berikut:

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

Saya pikir Ubuntu 14.10 seharusnya adalah kernel versi 3.16 (seperti yang dinyatakan di sini ), jadi mengapa saya memiliki kernel versi 3.13.0-24-generik?

Alasan saya bertanya adalah karena ada tambalan di 3.13.0-29-generik yang ingin saya miliki (yaitu, memiliki fallocate yang bekerja pada AUFS dalam wadah buruh pelabuhan saya) yang dibahas di sini .

jcm
sumber
Apakah wadah berjalan di Ubuntu Trusty? Jika demikian, itu sebabnya.
saiarcot895

Jawaban:

12

Dari What is Docker? :

LIGHTWEIGHT

Kontainer yang berjalan pada satu mesin berbagi kernel sistem operasi yang sama; mereka mulai secara instan dan menggunakan lebih sedikit RAM. Gambar dibuat dari sistem file berlapis dan berbagi file umum, membuat penggunaan disk dan unduhan gambar jauh lebih efisien.

Kontainer dijalankan pada kernel OS host. Dalam kasus Anda, host dapat berupa Ubuntu 14.04 (menjalankan kernel asli) atau Ubuntu 12.04 (menjalankan kernel dari tumpukan pemberdayaan perangkat keras trusty ).

Jika host adalah Ubuntu 14.04 Anda dapat menginstal kernel 3.16:

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

Atau kernel 3.19:

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

Untuk Ubuntu 12.04, kernel 3.13 adalah yang resmi terbaru.

Eric Carvalho
sumber
Apakah maksud Anda saya harus memutakhirkan kernel host? Tidak ada cara untuk hanya memutakhirkan kernel wadah?
jcm
5
@ jcm Tidak ada kernel di dalam sebuah wadah. Bahkan jika Anda menginstal kernel, itu tidak akan dimuat ketika wadah mulai. Tujuan dari wadah adalah untuk mengisolasi proses tanpa perlu menjalankan kernel baru. Itu juga sebabnya wadah dibatasi untuk Linux. Jika Anda perlu menjalankan OS lain atau versi kernel lain Anda harus menggunakan virtualisasi.
Eric Carvalho