Яка ОС працює в моєму контейнері Docker?


20

Більшу частину часу, використовуючи один із цих двох, я можу сказати, яка ОС працює в моєму контейнері Docker (альпійський, 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 підкаже вам ядро, яке працює, що є ядром ОС хоста (контейнери, на відміну від VM, мають одне і те саме ядро).

Для визначення базового зображення контейнера не існує гарантованого рішення зсередини контейнера. Ви можете шукати покажчики від великих постачальників, як, наприклад, Janosch (/ etc / os-release для більшості постачальників, таких як Debian, CentOS та Alpine, або / etc / lsb-реліз для 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 VM, яка є хост-системою з контейнерами, що працюють на Docker для Windows.
BMitch

"uname" дасть вам інформацію про базовий хост, а не про контейнер (навіть якщо ви запускаєте його всередині контейнера).
Тронд

@Trondh Я вважаю, що це я сказав. Чи є у відповіді щось, що потрібно виправити?
BMitch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.