Мое понимание контейнеризации ограничено, поэтому, возможно, этот вопрос некорректен, но я точно знаю, что контейнеры Docker используют некоторые ресурсы ядра своей хост-системы, чтобы оставаться относительно легкими. Насколько мне известно, это может распространяться на распределенные пакеты ОС (например, binutils).
Если я не ошибаюсь, думая, что контейнеры Docker способны использовать пакеты, предоставляемые хостом, существует ли стандартный способ перечисления всех тех пакетов, которые контейнер намеревается/ожидает найти на данном сервере при размещении на нем?
решение1
Я точно знаю, что контейнеры Docker используют некоторые ресурсы ядра своей хост-системы, чтобы оставаться относительно легкими.
Да, контейнеры используют общее ядро хоста.
Насколько мне известно, это может распространяться и на пакеты, распространяемые ОС (например, binutils).
Этоможет, но это крайне необычно и требует ручной настройки вне контейнера — по сути, вам нужно смонтировать том с хоста, что позволит контейнеру получить доступ к соответствующим частям его файловой системы(систем).
В подавляющем большинстве случаев пользовательские части контейнеров полностью отделены от хоста. Не существует стандартного способа перечисления пакетов, которые контейнер ожидает найти на хосте, поскольку контейнеры обычно не имеют таких ожиданий и не могут объявить такие ожидания. Если вы столкнетесь с таким контейнером, документация должна сообщить вам об этом, и если у него есть какой-либо дескриптор развертывания (напримердиаграмма Helm для Kubernetes), она будет включать требуемые тома и точки монтирования (но это не скажет вам, что требуется от хоста).
Контейнеры действительно не зависят от хоста: они работают на любой системе с соответствующей средой выполнения контейнера, а хост может использовать любую систему пакетов, которую захочет, или даже не использовать вообще. Таким образом, у контейнеров даже нет необходимых концепций, чтобы требовать пакет от хоста; это противоречило бы некоторым фундаментальным принципам, лежащим в основе контейнеров.