大多数时候,使用这两者之一,我可以知道哪个操作系统在我的 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
有什么方法可以获得它正在运行的操作系统的文本版本?
我喜欢使用Screenfetch。您可能想尝试一下。
如果您查看代码,您可以看到它如何确定分布:
lsb_release -sirc
cat /etc/os-release
还要涵盖 CentOS:
cat /etc/issue
uname
将告诉您正在运行的内核,即主机操作系统内核(与 VM 不同,容器共享相同的内核)。要识别容器的基本映像,容器内部没有保证的解决方案。您可以从 Janosch 等主要供应商那里寻找指针(/etc/os-release 用于大多数供应商,如 Debian、CentOS 和 Alpine,或 /etc/lsb-release 用于 Ubuntu)。您还可以检查软件包管理工具是否已安装(/etc/apk、/etc/apt、/etc/yum)。
在容器之外,您可以检查图像并跟踪图层以查看图像的来源,但这会涉及到定位 sha256 校验和。最好的方法是查看用于构建映像的 Dockerfile。
在docker trimmed container上,在 /etc/ release、/etc/issue、lsb_release 等没有运气之后,这对我有用(我知道有些是针对特定发行版的):
以root身份执行此命令:
来源:https ://unix.stackexchange.com/questions/23833/how-can-i-tell-what-version-of-linux-im-using/326917#326917
这对我有用,但必须在容器之外:
docker exec container-name cat /etc/os-release
当您从容器内部的 bash 提示符处执行相同的命令时,它会给出主机系统的特征。
这可能是因为一旦启动,docker 容器会共享大部分系统资源以保持轻量级。虽然我在 Linux 下,但 Windows 用户可能会有不同的结果。
在 docker 容器中,etc 文件夹下应该有一个名为 debian_version 的文件。你可以做 cat debain_version。它将向您显示 debian 版本。