Большую часть времени, используя один из этих двух, я могу определить, какая ОС запущена в моем контейнере 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/Linuxbash-4.2$ more /etc/issue\SKernel \r on an \m
Есть какой-нибудь способ получить текстовую версию операционной системы, на которой она запущена?
Мне нравится использовать Выборка экрана Возможно, вы захотите попробовать это.
Если вы заглянете в код, то увидите, как он определяет распределение:
lsb_release -sirc
cat /etc/os-release
И для покрытия CentOS тоже:
uname
сообщит вам запущенное ядро, которое является ядром хост-ОС (контейнеры, в отличие от виртуальных машин, используют одно и то же ядро).
Чтобы идентифицировать базовое изображение контейнера, нет гарантированного решения изнутри контейнера. Вы можете поискать указатели у основных поставщиков, таких как Janosch (/etc/os-release для большинства поставщиков, таких как Debian, CentOS и Alpine, или /etc/lsb-release для Ubuntu). Вы также можете проверить инструменты управления пакетами, если они установлены (/etc/apk, /etc/apt, /etc/yum).
За пределами контейнера вы можете просмотреть изображение и отследить слои, чтобы увидеть, откуда взялось изображение, но это приводит к обнаружению контрольных сумм sha256. Лучший метод - просмотреть файл Dockerfile, который использовался для создания образа.