【问题标题】:Why docker has ability to run different linux distribution? [closed]为什么 docker 有能力运行不同的 linux 发行版? [关闭]
【发布时间】:2014-10-16 03:15:13
【问题描述】:

我们可以使用 docker 来拉取不同的图像。而且这些镜像是不同的linux发行版。 但无论 docker 运行在哪个 linux 发行版上,docker 都可以像在虚拟机中一样运行这些不同的 linux 发行版。

我知道 docker 使用aufs 来控制不同的读写访问级别。所以它可以重用主机上的一些文件。但是当我的主机运行arch linux 时,docker 如何在容器中运行apt-get?图像是否包含apt-get 二进制文件?但是不同的 linux 发行版有不同的库和软件版本。连配置文件都不一样。docker如何在arch linux中“运行”ubuntu?

【问题讨论】:

标签: linux docker


【解决方案1】:

因为内核是一样的。

所有 linux 发行版的共同点,以及为什么它们被称为 linux,是因为它们都使用 linux 内核。

容器与主机共享相同的内核,这就是您可以在 Ubuntu 主机上运行 Arch 映像的原因。

这里是 Linux 的概述。

内核是操作系统的一部分,负责处理与硬件的通信。它是操作系统的最低级别。以下是内核的主要功能列表:

  • 内存管理
  • 网络管理
  • 设备驱动程序
  • 文件管理
  • 流程管理

因此,当您使用容器时,您只能访问主机的内核,因为它是与硬件通信的唯一部分,只要您的操作系统使用良好的syscall,您就可以运行任何 linux 发行版在你的容器里面。 (这就是你不能在容器中使用 Windows 的原因:它没有使用相同的 syscall)。

【讨论】:

  • 所以运行 ubuntu docker 镜像就是运行 ubuntu 在 linux 内核上所做的一切。不是吗?
  • @lajarre 不完全是。它并没有运行所有东西(尽管它在技术上可以),基本的 ubuntu 映像运行了使 ubuntu 工作所需的最低限度。
  • @Regan,docker如何处理不同linux内核版本的差异?
  • @Hammer 一点也不。所有容器都运行在同一个内核上。发行版之间最大的区别是用户空间(应用程序、库、文件系统、包管理器)。每个容器都包含它自己的版本。但也有例外,例如 Redis database,内核差异确实很重要。
  • 这个答案意外地颠倒了 OP 对 Arch 和 Ubuntu 的作用。
【解决方案2】:

是的,图像必须包含 apt-get 才能运行 apt-get。每个图像可以在其中安装不同的软件。例如,您可以安装 Arch docker image 或 ubuntu 映像。您可以使用以下命令搜索公共图像。

docker search <your search term>

所以要搜索你可以使用的 ubuntu 图像

docker search ubuntu

我建议您阅读docker tutorial 并仔细阅读左侧的所有说明和链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2022-12-10
    • 2012-11-16
    相关资源
    最近更新 更多