【问题标题】:What is the relationship between the docker host OS and the container base image OS?docker host OS 和 container base image OS 有什么关系?
【发布时间】:2013-09-18 03:14:34
【问题描述】:

我不确定我问的问题是否正确......但是当我阅读了所有我可以接触到的 docker 时,我发现我可以在 Ubuntu 12.04(例如)上安装 Docker,然后我可以安装 Fedora 容器或不同版本的 ubuntu? (有一个例子是用户在容器中安装了busybox。)

当然我可能完全错了。

但我希望基础系统和容器之间存在短暂的连接。

重述:宿主操作系统和容器基础镜像的操作系统是什么关系?

【问题讨论】:

    标签: docker


    【解决方案1】:

    正如 BraveNewCurrency 所说,主机操作系统和容器之间的唯一关系是内核。

    这是 docker 和“常规”虚拟机之间的主要区别之一,没有开销,一切都直接发生在主机的内核中。

    这就是您只能在容器中运行基于 Linux 的发行版/二进制文件的原因。如果你想运行其他东西,这不是不可能的,但你需要在容器内进行某种虚拟化(qemu、kvm 等)

    Docker 管理作为文件系统表示的图像。您可以安装任何 linux 发行版或简单地放置二进制文件。

    确实,为了示例的方便,我们经常依赖基础镜像,但您也可以在没有任何分发库/二进制文件的情况下创建镜像。这样一来,您将拥有一个非常小巧但功能强大的容器。

    关于发行版还有一点:由于内核仍然是主机的内核,因此发行版不会提供任何特定的内核模块/补丁。

    【讨论】:

    • 所以如果主机操作系统是 Ubuntu,那么容器也将是 Ubuntu?
    • 容器的内核将是来自 ubuntu 的内核,但仅此而已。您可以轻松地将 centos、archlinux、debian 或任何其他基于 linux 的发行版作为容器运行。
    • 虽然这些信息可能会直接/间接地在 docker 网站上说明,但我真的觉得他们应该让这个更清楚一点。我已经完成了主页、概述、交互式教程和大部分基本教程。尽管如此,我还是对这个话题感到困惑,并开始假设 docker 的最佳性能(基于该站点的架构图)需要在主机和容器操作系统上匹配。我对“linux内核”的概念很陌生,所以这对我来说并不是很明显。知道这一点立即让 docker 成为坏蛋。
    • 这似乎表明只有操作系统的用户空间部分(库、命令、应用程序)可以容器化。如果应用程序需要不同的内核版本(例如 3.10 与 4.9),那么它可能无法在容器中运行。对吗?
    • 没错。但是,您可以将实际的虚拟机(例如 qemu)容器化并在其中运行任何内核。
    【解决方案2】:

    从字面上看,它们唯一的共同点就是内核。他们的整个世界(文件系统)都在 docker 容器中。

    【讨论】:

      【解决方案3】:

      还有一个考虑——即使两个内核相同,如果宿主操作系统不支持 Docker 也会有问题,比如 RHEL 6:https://access.redhat.com/solutions/1378023

      因此,即使镜像是 Linux 镜像,您也无法在 RHEL 6 上启动容器。

      【讨论】:

        猜你喜欢
        • 2014-01-16
        • 1970-01-01
        • 2014-12-12
        • 2022-10-24
        • 1970-01-01
        • 1970-01-01
        • 2021-08-04
        • 2018-06-20
        相关资源
        最近更新 更多