Dlaczego wersja jądra nie pasuje do wersji Ubuntu w kontenerze Docker?

11

Mam kontener Docker zbudowany z Ubuntu 14.10. Kiedy loguję się do kontenera, aby sprawdzić wersję Ubuntu i wersję jądra, widzę:

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

Myślałem, że Ubuntu 14.10 miał być wersją jądra 3.16 (jak podano tutaj ), więc dlaczego mam wersję jądra 3.13.0-24-generic?

Powodem, dla którego pytam, jest to, że w łatce 3.13.0-29-generic jest łatka, którą chciałbym mieć (to znaczy, że fallocate pracuje na AUFS w moim kontenerze dokera), który jest omawiany tutaj .

jcm
źródło
Czy kontener działa na Ubuntu Trusty? Jeśli tak, to właśnie dlatego.
saiarcot895

Odpowiedzi:

12

From What is Docker? :

LEKKA

Kontenery działające na jednym komputerze współużytkują to samo jądro systemu operacyjnego; zaczynają się natychmiast i zużywają mniej pamięci RAM. Obrazy są zbudowane z warstwowych systemów plików i współużytkują wspólne pliki, dzięki czemu użycie dysku i pobieranie obrazów jest znacznie wydajniejsze.

Kontenery działają w jądrze systemu operacyjnego hosta. W twoim przypadku hostem może być Ubuntu 14.04 (z uruchomionym oryginalnym jądrem) lub Ubuntu 12.04 (z uruchomionym jądrem ze stosu włączania sprzętu trusty ).

Jeśli hostem jest Ubuntu 14.04, możesz zainstalować jądro 3.16:

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

Lub jądro 3.19:

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

W przypadku Ubuntu 12.04, jądro 3.13 jest najnowszym oficjalnym.

Eric Carvalho
źródło
Czy masz na myśli, że musiałbym zaktualizować jądro hosta? Nie ma sposobu, aby po prostu zaktualizować jądro kontenera?
jcm
5
@jcm W pojemniku nie ma jądra. Nawet jeśli zainstalujesz jądro, nie zostanie ono załadowane podczas uruchamiania kontenera. Samo zadanie kontenera polega na izolowaniu procesów bez potrzeby uruchamiania nowego jądra. Dlatego też kontenery są ograniczone do systemu Linux. Jeśli potrzebujesz uruchomić inny system operacyjny lub inną wersję jądra, musisz skorzystać z wirtualizacji.
Eric Carvalho,