Какое имя и версию Linux я увижу в контейнере?

я выполняюcat /etc/os-releaseв контейнере.

У меня есть докер-хост Ubuntu 22.04. Когда я запускаю контейнер и вижу файл выпуска ОС Linux внутри контейнера, я вижу свое имя Ubuntu, независимо от того, в каком контейнере я его запускаю...

Однако у меня также есть другой кластер Kubernetes, также на Ubuntu 22.04 (без докера, кластер настроен на прямое использование контейнера). Если я создаю развертывание на основе какого-либо образа, когда я вижу файл выпуска ОС, я вижу конкретное имя Linux для образа, которое явно происходит из самого образа: иногда Alpine, иногда Bookworm и т. д.

Почему такое другое поведение?

1 ответ

ПОДРОБНОСТИ :

Контейнеры Docker имеют многоуровневую файловую систему.
Корневая файловая система контейнера отличается от корневой файловой системы хоста. /файловая система.
Контейнер — это не то же самое, что хост!

В этом сценарии Контейнер может быть Хостом, а может и не быть!
[[ Зависит от того, что и где установлено ]]

При использовании слоев, если Контейнер все еще использует файл хоста [[из-за точек монтирования и сопоставлений]], тогда мы увидим сведения об ОС хоста, тогда как если Контейнер использует собственный или измененный файл, мы увидим Содержимое этого файла может быть одинаковым или другим.

Хост Debian Docker, на котором работает контейнер Ubuntu Docker, без собственного: будет содержать Debian.

Хост Debian Docker, на котором работает Debian Docker Container, с собственным : будет содержать Debian.

Хост Debian Docker, на котором работает Ubuntu Docker Container, с собственным : будет содержать Ubuntu.

КРАТКОЕ СОДЕРЖАНИЕ :

Когда обновляется в Контейнере [[ У него есть собственный/etc]] , то он предоставит подробную информацию о контейнере.
Когда/etc/os-releaseне обновляется в контейнере [[ Исходный файл доступен через монтирование в ту же точку монтирования/etc/]] , тогда он предоставит подробную информацию об хосте.

Другие вопросы по тегам