LINUX.ORG.RU
ФорумAdmin

Можно ли в докере запускать контейнеры с более новым ядром чем в хосте?

 ,


0

2

Насколько я понимаю, что если в новом ядре что-то изменилось или добавилось, то новый софт в докере либо не запустится, ругаясь на какой-нить undefined symbol или что еще хуже рано или поздно прога упадет с дампом из-за того, что будет вызов какой-нить функции ядра, у которой, например, поменялась сигнатура. Правильно я думаю или нет?

в докере запускать контейнеры с более новым ядром чем в хосте?

Докер использует ядро хоста.

vvn_black ★★★★★
()

ругаясь на какой-нить undefined symbol

Нет. Undefined symbol - это в библиотеках (.so).

прога упадет с дампом из-за того, что будет вызов какой-нить функции ядра, у которой, например, поменялась сигнатура

Могло бы быть, если бы в линуксе не так внимательно следили за совместимостью. Но следят норм, сигнатуры не меняются. Зато может быть другое: прога упадёт из-за того, что будет вызов функции ядра, которой в старом ядре вообще нет. Но и это в целом маловероятно по ряду причин.

А вообще брось эту гадость (докер).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

Наверняка, есть софт который требует при сборки kernel headers. Если мы на хосте под ubuntu16 запускает в докере ubuntu18, то как у нас все не падает, если под ubuntu16 один kernel headers, а под ubuntu18 - другой?

plgrm44
() автор топика
Ответ на: комментарий от firkax

Слишком много разнообразия разного софта с разными либами и держать этот зоопарк, как мне кажется, проще в докере. Виртуалка много ресурсов жрёт.

А потом, чтобы эту кухню(с софтом) мигрировать на другой хост, это все пересобирать надо, а это слишком сложно и куча проблем возникает и без программиста и его потраченного времени не обойтись.

plgrm44
() автор топика
Ответ на: комментарий от plgrm44

Kernel headers нужны только ядерным модулям и, очень иногда, утилитам системного администрирования. Ни первого ни второго в докере не бывает.

firkax ★★★★★
()

Ну, можешь дать докеру доступ к /dev/kvm на хосте и установить в контейнере qemu-system-x86, и через него запустить любую операционку с каким-хочешь-ядром. НО ЗАЧЕМ?

beka
()
Ответ на: комментарий от plgrm44

В 99% случаев ничего не сломается. Интерфейс общения юзерспейс/ядро ломают очень редко. Сломаться может всякий low-level, но он настолько low, что его в докере запускать тупо нет смысла ибо он работает чуть не со структурами ядра. Ну и перестанут работать какие-нибудь новомодные функции или флаги

no-dashi-v2 ★★★
()
Ответ на: комментарий от no-dashi-v2

Прога которая используется libQt5Core.so пишет ошибку при запуске(не найдена libQt5Core.so.5, хотя она лежит в /usr/lib/x86_64-linux-gnu/, который виден системой) под более старым ядром в docker

нашел в гугле решение: sudo strip –remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

Может, кто объяснить что эта команда делает и почему возникла такая ошибка? Это все из-за low level в Qt5Core?

plgrm44
() автор топика
Ответ на: комментарий от router

Это «бэкенд» для докера.
Те же команды и докерфайлы, но с полной изоляцией и отдельным ядром

zolden ★★★★★
()
Ответ на: комментарий от plgrm44

Команда как понятно всем у кого есть гугл убирает из файла секцию прмиечаний в которой написано «этот бинарник хочет какие-то фичи из новых ядер».

https://stackoverflow.com/questions/53363275/what-is-the-significance-of-note-abi-tag-section-in-elf

https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB/noteabitag.html

no-dashi-v2 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.