我的 Docker 容器中运行的是哪个操作系统?

Bob*_*ait 49 linux operating-system docker

大多数时候,使用这两个中的一个,我可以知道我的 Docker 容器中运行的是哪个操作系统(alpine、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
Run Code Online (Sandbox Code Playgroud)

有什么方法可以获得它正在运行的操作系统的文本版本?

小智 65

我喜欢使用Screenfetch。您可能想尝试一下。

如果您查看代码,您可以看到它如何确定分布:

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

并涵盖 CentOS:

  • cat /etc/issue

  • "/etc/os-release" 确实是一个很好的来源,但在某些 centOS 上不存在。如果你只有一次决定,我会说:“ls /etc/*release”。但是如果需要字符串方式,则需要“cat /etc/os-release”和“cat /etc/issue”来涵盖所有情况。谢谢你们俩。 (3认同)
  • 是的,在 alpine 上,它们都使用 `cat /etc/issue` 和 `cat /etc/alpine-release`! (2认同)

BMi*_*tch 9

uname 将告诉您正在运行的内核,即主机操作系统内核(容器与 VM 不同,共享相同的内核)。

要识别容器的基本映像,容器内部没有保证的解决方案。您可以从主要供应商那里寻找指示,例如 Janosch 提供的(/etc/os-release 对于大多数供应商,如 Debian、CentOS 和 Alpine,或 /etc/lsb-release 对于 Ubuntu)。您还可以检查包管理工具是否已安装(/etc/apk、/etc/apt、/etc/yum)。

在容器之外,您可以检查图像并跟踪图层以查看图像的来源,但这需要定位 sha256 校验和。最好的方法是查看用于构建镜像的 Dockerfile。

  • “uname”将为您提供有关底层主机的详细信息,而不是容器的详细信息(即使您在容器内运行它)。 (2认同)

小智 5

docker 修剪过的容器上,在 /etc/ release 、 /etc/issue、lsb_release 等失败后,这对我有用。(我知道有些是针对特定发行版的):

以root身份执行此命令:

# cat /proc/version
Linux version 4.19.121-linuxkit (root@18b3f92ade35) (gcc version 9.2.0 (Alpine 9.2.0)) #1 SMP Thu Jan 21 15:36:34 UTC 2021
Run Code Online (Sandbox Code Playgroud)

来源:https://unix.stackexchange.com/questions/23833/how-can-i-tell-what-version-of-linux-im-using/326917#326917