Quale sistema operativo è in esecuzione nel mio contenitore Docker?


20

Il più delle volte, usando uno di questi due, posso dire quale sistema operativo è in esecuzione nel mio contenitore Docker (alpine, centOS, ecc.)

Ma questa volta, non posso 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

Qualche modo per ottenere una versione di testo del sistema operativo in esecuzione?

Risposte:


31

Mi piace usare Screenfetch . Potresti provare questo.

Se guardi nel codice puoi vedere come determina la distribuzione:

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

E per coprire anche CentOS:

  • cat /etc/issue

1
"/ etc / os-release" è davvero una buona fonte, ma non è presente su alcuni centOS. Se hai solo uno scatto da decidere, direi: "ls / etc / * release". Ma se uno ha bisogno della stringa, è necessario sia "cat / etc / os-release" che "cat / etc / issue" per coprire tutti i casi. Grazie ad entrambi.
Bob Yoplait,

Sì su alpino funzionano entrambi cat /etc/issuee cat /etc/alpine-release!
Julian,

7

uname ti dirà il kernel che è in esecuzione, che è il kernel del sistema operativo host (i contenitori, a differenza dei VM, condividono lo stesso kernel).

Per identificare l'immagine di base del contenitore, non esiste una soluzione garantita dall'interno del contenitore. Puoi cercare i suggerimenti dei principali fornitori come Janosch (rilascio / etc / os per la maggior parte dei distributori come Debian, CentOS e Alpine, o rilascio / etc / lsb per Ubuntu). Puoi anche controllare gli strumenti di gestione dei pacchetti se sono installati (/ etc / apk, / etc / apt, / etc / yum).

Al di fuori del contenitore, è possibile ispezionare l'immagine e rintracciare i livelli per vedere da dove proviene l'immagine, ma ciò accede alla localizzazione dei checksum sha256. Il metodo migliore è rivedere il Dockerfile che è stato utilizzato per creare l'immagine.


Quando eseguo questo su Windows con l'ultima immagine di Ubuntu, ad oggi, unameritorna Linuxe uname -aritornaLinux 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 è la VM Docker integrata, ovvero il sistema operativo host con contenitori eseguiti su Docker per Windows.
BMitch

"uname" ti fornirà dettagli sull'host sottostante, non sul contenitore (anche se lo esegui all'interno di un contenitore).
Trondh,

@Trondh Credo sia quello che ho detto. C'è qualcosa nella risposta che deve essere corretto?
BMitch,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.