【问题标题】:Docker understanding FROM part of the image [closed]Docker从图像的一部分理解[关闭]
【发布时间】:2015-10-28 21:57:00
【问题描述】:

看完https://docs.docker.com/introduction/understanding-docker/后,我仍然很难理解docker容器的轻量级。

查看一些公共图像,其中大多数基于以下“基础”图像之一,例如FROM debian:jessieFROM debian:wheezy,还有 ubuntu 的变体,我猜 fedora 和 centos 也有(还有一个“scratch”是另一个话题)。

所以,考虑到这一点,我理解,每个 docker 容器都运行基本操作系统(在图像中提到),那么它是如何工作的?轻量级从何而来?你能在 fedora 上运行基于 debian:jessie 的镜像,在 debian 上运行基于 centos 的镜像吗?

“从头开始”呢?如果你的 Dockerfile 基于“scratch”,那么你没有在容器内运行操作系统,那么在这种情况下它是如何工作的呢?

宿主系统的Linux内核和运行在这个宿主系统上的docker容器是什么关系?

【问题讨论】:

  • “运行”?这是一个非常沉重的术语。如果您没有通过初始化系统,那么您并没有真正运行整个操作系统...
  • ...或者,可以说,由于所有 docker 映像都使用您自己的内核,因此您从不运行除您自己的本地操作系统之外的任何操作系统。 :)
  • 顺便说一句,一系列松散相关的问题并不是一个好的 StackOverflow 问题。当某些答案比其他答案更好地回答您的某些问题时,您(以及其他人如何)应该如何判断哪个答案是最好的/最规范的?这种情况是存在“过于宽泛”的密切原因的部分原因。

标签: linux docker virtualization dockerfile


【解决方案1】:

轻量级从何而来?

在所选后端允许的情况下,图像会作为其基础的增量存储 - 因此,如果您有多个容器使用相同的基础镜像,则该基础镜像只会在磁盘上复制一次。此外,每个映像都在重用您主机的内核,并且不需要硬件级虚拟化。


因此,考虑到这一点,我理解,每个 docker 容器都运行基本操作系统(在图像中提到),那么它是如何工作的?

“Runs the X os”实在是太模糊了,不能作为有用的描述;您想要“运行”这个词的含义本身并不清楚。在 Docker 环境中启动的每个应用程序都使用主机的内核,以及由容器提供的文件系统内容(因此共享库、配置等)。


你能在 fedora 上运行基于 debian:jessie 的镜像,在 debian 上运行基于 centos 的镜像吗?

是的。任何依赖于特定操作系统内核的功能都将不可用。


宿主系统的Linux内核和运行在这个宿主系统上的docker容器是什么关系?

主机系统的内核是唯一使用的;期间。


“从头开始”呢?如果你的 Dockerfile 基于“scratch”,那么你没有在容器内运行操作系统,那么在这种情况下它是如何工作的呢?

您可以将插入到容器中的任何软件与主机的内核一起运行。在这种情况下,您有责任将该软件设置为在没有任何通常由基本映像提供的组件(如共享库)的情况下运行。这通常意味着您需要将此软件编译为静态版本,并且不依赖于任何操作系统提供的实用程序(如 shell),除非您自己提供它们。

【讨论】:

  • 嗨,@charles-duffy,但是如上面文章“一个容器由操作系统、用户添加的文件和元数据组成”中的状态如何。那么 docker hub 上提供的操作系统映像(如 debian、ubuntu、fedora 等)的目的是什么?如果他们要重用主机内核和资源呢?是什么让在 debian 上运行的 fedora 镜像表现得像 fedora,为什么有人需要这些镜像?如果我的意思很清楚。
  • “操作系统”是一个难以使用的模糊术语。一个操作系统在与不同操作系统的内核一起使用时是否被认为是完整的,可以进行合理的解释。
  • @zshamrock, ...您所说的“资源”到底是什么意思? libc 来自图像;配置文件和框架来自图像。这足以(在大多数情况下)表现得更像该映像而不是主机操作系统,尽管内核被称为主机的。
  • ...对于典型(非静态链接)应用程序二进制兼容性最重要的是共享库,它来自文件系统,而文件系统 all 来自除非另有说明,否则图片。
  • 谢谢你,Charles Duffy,现在它更有意义和清晰了。
猜你喜欢
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
相关资源
最近更新 更多