Какая ОС запущена в моем контейнере Docker?

Большую часть времени, используя один из этих двух, я могу определить, какая ОС запущена в моем контейнере 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 тоже:

  • cat /etc/issue

uname сообщит вам запущенное ядро, которое является ядром хост-ОС (контейнеры, в отличие от виртуальных машин, используют одно и то же ядро).

Чтобы идентифицировать базовое изображение контейнера, нет гарантированного решения изнутри контейнера. Вы можете поискать указатели у основных поставщиков, таких как Janosch (/etc/os-release для большинства поставщиков, таких как Debian, CentOS и Alpine, или /etc/lsb-release для Ubuntu). Вы также можете проверить инструменты управления пакетами, если они установлены (/etc/apk, /etc/apt, /etc/yum).

За пределами контейнера вы можете просмотреть изображение и отследить слои, чтобы увидеть, откуда взялось изображение, но это приводит к обнаружению контрольных сумм sha256. Лучший метод - просмотреть файл Dockerfile, который использовался для создания образа.