Docker: какие изменения API в новых ядрах Linux вызовут поломку новых дистрибутивов (в контейнере) на старом ядре хоста? - PullRequest
0 голосов
/ 19 июня 2020

Может ли кто-нибудь указать на список видимых изменений API в ядре Linux для каждой версии?
И список, в каких дистрибутивах используется каждая из этих функций API?

Таким образом, мы можем сказать, будет ли данный дистрибутив работать на данном ядре хоста, без месяцев тщательного тестирования для выявления редких сбоев.

Например, мы хотим попробовать Fedora 32 внутри контейнера, на хосте, ядро ​​которого составляет 3,10. Это будет работать? Этот список должен дать быстрый способ проверить.

Другими словами, дистрибутив Fedora 32 был написан в контексте ядра 5.4. Это означает, что есть большая вероятность, что некоторые из двоичных файлов в дистрибутиве Fedora 32 зависят от хотя бы одного из изменений API, которые были сделаны между ядром 3.10 и ядром 5.4. Но потребуется много тестов, чтобы определить, что ломается. Такой список будет большим подспорьем.

Спасибо.

PS Здесь обсуждаются изменения в API ядра с течением времени с сайта RedHat: https://www.redhat.com/en/blog/architecting-containers-part-1-why-understanding-user-space-vs-kernel-space-matters

docker run -t -i rhel6-base man syscalls

SYSCALLS(2)                Linux Programmer’s Manual               SYSCALLS(2)
NAME
syscalls - Linux system calls
SYNOPSIS
Linux system calls.
DESCRIPTION
The system call is the fundamental interface between an application and the kernel.
System call                 Kernel        Notes
------------------------------------------------------------------------------
_llseek(2)                  1.2
_newselect(2)
_sysctl(2)
accept(2)
accept4(2)                  2.6.28
access(2)
acct(2)
add_key(2)                  2.6.11
adjtimex(2)
afs_syscall(2)                            Not implemented
alarm(2)
alloc_hugepages(2)          2.5.36        Removed in 2.5.44
bdflush(2)                                Deprecated (does nothing) since 2.6
bind(2)
break(2)                                  Not implemented
brk(2)
cacheflush(2)               1.2           Not on i386

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

...