Kernel

為什麼 CentOS Docker 容器說它是 Ubuntu?

  • April 5, 2019

我正在嘗試驗證為我的 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 容器鏡像文件時,我需要在它們之間匹配什麼?說“你不需要匹配發行版或核心版本。”

cat /proc/version顯示核心版本。由於容器與主機在同一核心上執行。它與主機的核心相同。

cat /etc/*-release正在顯示分發版本。它是作業系統版本,減去核心。

容器不是虛擬化,它是一個直接在 Linux 核心上執行的隔離系統。它使用核心名稱空間和 cgroups。名稱空間允許單獨的網路、程序 ID、掛載點、使用者、主機名、程序間通信。cgroups 允許限制資源。

引用自:https://unix.stackexchange.com/questions/510756