Какая ОС работает в моем контейнере Docker?


20

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

Есть ли способ получить текстовую версию ОС, на которой она работает?

Ответы:


31

Мне нравится использовать Screenfetch . Вы можете попробовать это.

Если вы посмотрите на код, то увидите, как он определяет распределение:

  • lsb_release -sirc
  • cat /etc/os-release

И для покрытия CentOS тоже:

  • cat /etc/issue

1
"/ etc / os-release" действительно хороший источник, но его нет в некоторых centOS. Если у вас есть только один шанс, я бы сказал: «ls / etc / * release». Но если вам нужен строковый путь, вам нужны и "cat / etc / os-release", и "cat / etc / issue", чтобы охватить все случаи. Спасибо вам обоим.
Боб Йоплайт

Да на альпийском они оба работают cat /etc/issueи cat /etc/alpine-release!
Джулиан

7

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

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

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


Когда я запускаю это на Windows с последним образом Ubuntu, на сегодняшний день unameпросто возвращается Linuxи uname -aпросто возвращаетсяLinux 89e9cd67fc7a 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Дэвид

1
Linuxkit - это встроенная виртуальная машина Docker, которая является основной ОС с контейнерами, запускаемыми в Docker для Windows.
BMitch

«uname» предоставит вам подробную информацию о базовом хосте, а не о контейнере (даже если вы запустите его внутри контейнера).
Тронх

@ Трондх, я думаю, это то, что я сказал. Есть ли в ответе что-то, что нужно исправить?
BMitch
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.