Qual SO está sendo executado no meu contêiner Docker?

20

Na maioria das vezes, usando um desses dois, posso saber qual SO está sendo executado no meu contêiner do Docker (alpino, centOS etc.)

Mas desta vez, não sei dizer:

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

Alguma maneira de obter uma versão em texto do sistema operacional em execução?

Bob Yoplait
fonte

Respostas:

30

Eu gosto de usar o Screenfetch . Talvez queira experimentar isso.

Se você olhar o código, poderá ver como ele determina a distribuição:

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

E para cobrir também o CentOS:

  • cat /etc/issue
Janosch Gräf
fonte
1
"/ etc / os-release" é realmente uma boa fonte, mas não está presente em alguns centOS. Se você tiver apenas uma chance para decidir, eu diria: "ls / etc / * release". Mas se alguém precisar do modo string, você precisará de "cat / etc / os-release" e "cat / etc / issue" para cobrir todos os casos. Obrigado a vocês dois.
Bob Yoplait
Sim no alpino, ambos trabalham cat /etc/issuee cat /etc/alpine-release!
Julian
7

uname informará o kernel em execução, que é o kernel do sistema operacional host (os contêineres, diferentemente das VMs, compartilham o mesmo kernel).

Para identificar a imagem base do contêiner, não há solução garantida de dentro do contêiner. Você pode procurar por indicadores dos principais fornecedores como Janosch (/ etc / os-release para a maioria dos fornecedores como Debian, CentOS e Alpine ou / etc / lsb-release para Ubuntu). Você também pode verificar as ferramentas de gerenciamento de pacotes se elas estiverem instaladas (/ etc / apk, / etc / apt, / etc / yum).

Fora do contêiner, você pode inspecionar a imagem e rastrear as camadas para ver de onde vem a imagem, mas isso fica na localização das somas de verificação sha256. O melhor método é revisar o Dockerfile que foi usado para criar a imagem.

BMitch
fonte
Quando eu executo isso no Windows com a imagem do Ubuntu mais recente, a partir de hoje, unameapenas retorna Linux, e uname -aapenas retornosLinux 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
O Linuxkit é a VM do Docker incorporada, que é o SO host com contêineres executados no Docker for Windows.
BMitch
"uname" fornecerá detalhes sobre o host subjacente, não o contêiner (mesmo que você o execute dentro de um contêiner).
Trondh 11/10/19
@ Trondh Eu acredito que foi o que eu disse. Existe algo na resposta que precisa ser corrigido?
BMitch