docker主机OS和容器基础映像OS之间的关系是什么?

Ric*_*ard 118 docker

我不确定我问的是正确的问题......但是当我一直在阅读所有可以解决的Docker时,我看到我可以在Ubuntu 12.04上安装Docker(例如)然后我可以安装一个Fedora容器还是不同版本的ubuntu?(有一个例子,用户在容器中安装了busybox.)

当然,我可能完全错了.

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

重申:主机操作系统和容器基础映像的操作系统之间的关系是什么?

cre*_*ack 98

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

它是docker和'regular'虚拟机之间的主要区别之一,没有开销,一切都直接在主机内核中进行.

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

Docker管理作为文件系统表示的图像.您可以安装任何Linux发行版或只是放置二进制文件.

实际上,为了方便示例,我们经常依赖基础图像,但您也可以在没有任何分发库/二进制文件的情况下创建图像.那样你就会拥有一个非常小巧但功能齐全的容器.

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

  • 虽然这些信息可以直接/间接地在docker网站上说明,但我真的觉得它们应该让它更清晰一点.我曾经在主页,概述,交互式教程和大多数基本内容中工作过.尽管如此,我对这个主题感到困惑,并开始假设docker的最佳性能(基于站点的架构图)需要在主机和容器操作系统上匹配.我是"Linux内核"概念的新手,所以这对我来说并不是很明显.立即知道这一点使得码头工人成为了笨蛋. (35认同)
  • 容器的内核将是来自ubuntu的内核,但仅此而已.您可以轻松地运行centos,archlinux,debian或任何其他基于Linux的发行版作为容器. (20认同)
  • 那是正确的。但是,您可以将实际的虚拟机(例如 qemu)容器化并在其中运行任何内核。 (3认同)
  • 所以如果主机操作系统是Ubuntu,那么容器也将是Ubuntu? (2认同)
  • Docker是一个非常复杂的项目,利用了高级功能。在某个时候,我们假设用户具有一些知识,例如操作系统和发行版之间的区别。如果您认为这样做会增加价值,则说明文档是开源的,您可以提交拉取请求。 (2认同)
  • 这似乎表明只有OS(库,命令,应用程序)的用户空间部分可以容器化.如果应用程序需要不同的内核版本(例如3.10与4.9),那么它可能无法在容器中运行.是对的吗? (2认同)

Bra*_*ncy 23

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