¿Qué sistema operativo se está ejecutando en mi contenedor Docker?

20

La mayoría de las veces, usando uno de estos dos, puedo decir qué sistema operativo se está ejecutando en mi contenedor Docker (alpine, centOS, etc.)

Pero esta vez, no puedo decir:

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

¿Alguna forma de obtener una versión de texto del sistema operativo que está ejecutando?

Bob Yoplait
fuente

Respuestas:

31

Me gusta usar Screenfetch . Quizás quieras probar eso.

Si observa el código, puede ver cómo determina la distribución:

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

Y para cubrir CentOS también:

  • cat /etc/issue
Janosch Gräf
fuente
1
"/ etc / os-release" es una buena fuente, pero no está presente en algunos centOS. Si solo tiene una oportunidad para decidir, diría: "ls / etc / * release". Pero si uno necesita la forma de cadena, necesita "cat / etc / os-release" y "cat / etc / issue" para cubrir todos los casos. Gracias a los dos.
Bob Yoplait
Sí, en Alpine, ¡ambos trabajan cat /etc/issuey cat /etc/alpine-release!
Julian
7

uname le dirá el núcleo que se está ejecutando, que es el núcleo del sistema operativo host (los contenedores, a diferencia de las máquinas virtuales, comparten el mismo núcleo).

Para identificar la imagen base del contenedor, no hay una solución garantizada desde el interior del contenedor. Puede buscar punteros de los principales proveedores como Janosch ofrece (/ etc / os-release para la mayoría de los proveedores como Debian, CentOS y Alpine, o / etc / lsb-release para Ubuntu). También puede verificar las herramientas de administración de paquetes si están instaladas (/ etc / apk, / etc / apt, / etc / yum).

Fuera del contenedor, puede inspeccionar la imagen y rastrear las capas para ver de dónde proviene la imagen, pero eso implica ubicar las sumas de verificación sha256. El mejor método es revisar el Dockerfile que se usó para construir la imagen.

BMitch
fuente
Cuando ejecuto esto en Windows con la última imagen de Ubuntu, a partir de hoy, unamesolo regresa Linux, y uname -asolo regresaLinux 89e9cd67fc7a 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
David Culbreth
1
Linuxkit es el Docker VM incorporado, que es el sistema operativo host con contenedores que se ejecutan en Docker para Windows.
BMitch
"uname" le dará detalles sobre el host subyacente, no el contenedor (incluso si lo ejecuta dentro de un contenedor).
Trondh
@Trondh Creo que eso es lo que dije. ¿Hay algo en la respuesta que deba corregirse?
BMitch