为什么 CentOS Docker 容器说它是 Ubuntu?

为什么 CentOS Docker 容器说它是 Ubuntu?

我正在尝试验证当为我的 Ubuntu 选择 Docker 容器镜像文件时,我需要在它们之间匹配什么?

在 Lubuntu 上,CentOS 容器称其为 CentOS,通过

$ sudo docker run centos bash -c "cat /etc/*-release "
CentOS Linux release 7.6.1810 (Core) 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

CentOS Linux release 7.6.1810 (Core) 
CentOS Linux release 7.6.1810 (Core) 

但也说它与主机是同一个 Ubuntu:

$ sudo docker run centos bash -c "cat /proc/version"
Linux version 4.15.0-46-generic (buildd@lgw01-amd64-038) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019


$ cat /proc/version
Linux version 4.15.0-46-generic (buildd@lgw01-amd64-038) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019
  1. 我想知道为什么这两个命令在操作系统发行版和内核版本上有所不同?

  2. 容器是否与其主机共享相同的内核?如果是的话,它们的内核版本应该相同吗?当为我的 Ubuntu 选择 Docker 容器镜像文件时,我需要在它们之间匹配什么?说“你不需要匹配发行版或内核版本。”

答案1

cat /proc/version显示内核版本。因为容器与主机运行在相同的内核上。它与主机具有相同的内核。

cat /etc/*-release显示发行版。它是操作系统版本,减去内核。

容器不是虚拟化,而是直接在 Linux 内核上运行的隔离系统。它使用内核名称空间和 cgroup。命名空间允许单独的网络、进程 ID、安装点、用户、主机名、进程间通信。 cgroups 允许限制资源。

答案2

  1. 我在提供的输出中找不到 CentOS 内核信息,只有版本发布 (7.6.1810);
  2. 是的,容器共享主机的内核。

更新检查回答。

相关内容