为什么内核版本与Docker容器中的Ubuntu版本不匹配?


11

我有一个从Ubuntu 14.10构建的Docker容器。当我登录容器检查Ubuntu版本和内核版本时,会看到以下内容:

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

我认为Ubuntu的14.10应该是内核版本3.16(为说明这里),所以为什么我的内核版本3.13.0-24泛型?

我问的原因是因为我希望在3.13.0-29-generic中有一个补丁(即在我的docker容器中对AUFS进行fallocate工作),在进行讨论。


容器是否在Ubuntu Trusty上运行?如果是这样,那就是为什么。
saiarcot895

Answers:


12

什么是码头工人?

轻量级

在单台计算机上运行的容器共享相同的操作系统内核。它们立即启动,并使用较少的RAM。映像是从分层文件系统构建的,并共享公用文件,从而使磁盘使用和映像下载更加高效。

容器在主机OS内核上运行。在您的情况下,主机可以是Ubuntu 14.04(运行原始内核)或Ubuntu 12.04(运行Trusty的硬件支持堆栈中的内核)。

如果主机是Ubuntu 14.04,则可以安装内核3.16:

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

或内核3.19:

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

对于Ubuntu 12.04,内核3.13是最新的官方版本。


您是说我必须升级主机内核吗?有没有办法只升级容器的内核?
jcm 2015年

5
@jcm容器内没有内核。即使您安装了内核,容器启动时也不会加载内核。容器的真正目的是在不需要运行新内核的情况下隔离进程。这也是为什么容器仅限于Linux的原因。如果您需要运行其他操作系统或内核版本,则必须使用虚拟化。
埃里克·卡瓦略
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.