Quel système d'exploitation s'exécute dans mon conteneur Docker?


20

La plupart du temps, en utilisant l'un de ces deux, je peux dire quel système d'exploitation fonctionne dans mon conteneur Docker (alpine, centOS, etc.)

Mais cette fois, je ne peux pas dire:

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

Est-il possible d'obtenir une version texte du système d'exploitation qu'il exécute?

Réponses:


31

J'aime utiliser Screenfetch . Vous voudrez peut-être essayer cela.

Si vous examinez le code, vous pouvez voir comment il détermine la distribution:

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

Et pour couvrir aussi CentOS:

  • cat /etc/issue

1
"/ etc / os-release" est en effet une bonne source, mais n'est pas présent sur certains centOS. Si vous n'avez qu'une seule photo à décider, je dirais: "ls / etc / * release". Mais si l'on a besoin de la chaîne, il faut à la fois "cat / etc / os-release" et "cat / etc / issue" pour couvrir tous les cas. Merci à vous deux.
Bob Yoplait

Ouais en alpin ils travaillent tous les deux cat /etc/issueet cat /etc/alpine-release!
Julian

7

uname vous indiquera le noyau en cours d'exécution, qui est le noyau du système d'exploitation hôte (les conteneurs, contrairement aux machines virtuelles, partagent le même noyau).

Pour identifier l'image de base du conteneur, il n'y a pas de solution garantie de l'intérieur du conteneur. Vous pouvez rechercher des pointeurs auprès des principaux fournisseurs comme Janosch le donne (/ etc / os-release pour la plupart des fournisseurs comme Debian, CentOS et Alpine, ou / etc / lsb-release pour Ubuntu). Vous pouvez également vérifier les outils de gestion des packages s'ils sont installés (/ etc / apk, / etc / apt, / etc / yum).

En dehors du conteneur, vous pouvez inspecter l'image et retrouver les calques pour voir d'où vient l'image, mais cela permet de localiser les sommes de contrôle sha256. La meilleure méthode consiste à examiner le Dockerfile qui a été utilisé pour créer l'image.


Quand j'exécute cela sur Windows avec la dernière image Ubuntu, à ce jour, unamerevient Linuxet uname -arevientLinux 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 est la machine virtuelle Docker intégrée, qui est le système d'exploitation hôte avec des conteneurs exécutés sur Docker pour Windows.
BMitch

"uname" vous donnera des détails sur l'hôte sous-jacent, pas sur le conteneur (même si vous l'exécutez dans un conteneur).
Trondh

@Trondh Je crois que c'est ce que j'ai dit. Y a-t-il quelque chose dans la réponse qui doit être corrigé?
BMitch
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.