Почему версия ядра не совпадает с версией Ubuntu в контейнере Docker?

11

У меня есть контейнер Docker, собранный из Ubuntu 14.10. Когда я вхожу в контейнер, чтобы проверить версию 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-generic?

Причина, по которой я спрашиваю, состоит в том, что в 3.13.0-29-generic есть патч, который я хотел бы иметь (то есть иметь Fallocate для работы с AUFS в моем док-контейнере), который обсуждается здесь .

хт
источник
Контейнер работает на Ubuntu Trusty? Если так, то это было бы почему.
saiarcot895

Ответы:

12

От чего такое Докер? :

ЛЕГКИЙ

Контейнеры, работающие на одной машине, используют одно и то же ядро ​​операционной системы; они запускаются мгновенно и используют меньше оперативной памяти. Изображения создаются из многоуровневых файловых систем и обмениваются общими файлами, что делает использование дисков и загрузку изображений намного более эффективными.

Контейнеры работают на ядре операционной системы. В вашем случае, хост может быть 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
5
@jcm Внутри контейнера нет ядра. Даже если вы установите ядро, оно не будет загружено при запуске контейнера. Самой целью контейнера является изоляция процессов без необходимости запуска нового ядра. Именно поэтому контейнеры ограничены Linux. Если вам нужно запустить другую ОС или другую версию ядра, вы должны использовать виртуализацию.
Эрик Карвалью,