Большая часть на этот раз, используя один из этих двух, я могу сказать, какая ОС работает в моем контейнере Docker (alpine, centOS и т. д.)
Но на этот раз я не могу сказать:
bash-4.2$ uname -a
Linux 6fe5c6d1451c 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
bash-4.2$ more /etc/issue
\S
Kernel \r on an \m
Любой способ получить текстовую версию ОС, в которой он работает?
Мне нравится использовать Screenfetch . Вы можете попробовать это.
Если вы посмотрите в код, вы увидите, как он определяет распределение:
lsb_release -sirc
cat / etc / os-release
И для CentOS тоже:
cat / etc / issue
uname
сообщит вам о работающем ядре, которое является ядром ОС хоста (контейнеры, в отличие от виртуальных машин, используют одно и то же ядро).
Чтобы идентифицировать базовый образ контейнера, изнутри контейнера нет гарантированного решения. Вы можете искать указатели от основных поставщиков, таких как Janosch (/ etc / os-release для большинства поставщиков, таких как Debian, CentOS и Alpine, или / etc / lsb-release для Ubuntu). Вы также можете проверить инструменты управления пакетами, если они установлены (/ etc / apk, / etc / apt, /etc/yum).
За пределами контейнера вы можете проверить изображение и отследить слои, чтобы увидеть, где образ исходит, но это касается определения контрольных сумм sha256. Лучший способ - просмотреть файл Dockerfile, который использовался для построения образа.
На docker trimmed container, это сработало для меня после неудачи с /etc/release, /etc/issue, lsb_release и т. Д. (Я знаю, что некоторые из них предназначены для конкретных дистрибутивов):
Выполните эту команду как root:
# cat /proc/version
Linux version 4.19.121-linuxkit (root@18b3f92ade35) (gcc version 9.2.0 (Alpine 9.2.0)) #1 SMP Thu Jan 21 15:36:34 UTC 2021