1

实际上,我是 Docker 生态系统的新手,我正在尝试了解容器在基础映像上究竟是如何工作的?基础镜像是否被加载到容器中?

我已经通过 Docker 文档,其中说读写容器层是在作为容器层的镜像层之上形成的,但我感到困惑的是镜像是不可变的,对吗?那么镜像在哪里运行,它是否在 VM 的 Docker 引擎中,以及容器实际上是如何发挥作用的?

4

1 回答 1

3

容器究竟是如何在基础镜像上工作的?基础镜像是否被加载到容器中?

Docker容器将一个软件包装成一个完整的软件,filesystem其中包含运行所需的一切:代码、运行时、系统工具、系统库——任何可以安装在服务器上的东西。

FreeBSD Jails和一样Solaris Zones,Linux 容器是自包含的执行环境——具有自己的、隔离的 CPU、内存、块 I/O 和网络资源(使用CGROUPS内核特性)——共享主机操作系统的内核。结果是感觉就像一个虚拟机,但减轻了客户操作系统的所有重量和启动开销。

话虽这么说,每个发行版都有自己的官方镜像dockerlibrarydocker

我很困惑图像是不可变的,对吗?映像在哪里运行,它是否在 VM 的 Docker 引擎中,以及容器实际上是如何发挥作用的?

Docker曾经使用AUFS,仍然使用它,debian并在其他发行版上使用AUFS类似文件系统overlay等。AUFS提供分层。每个图像由图层组成,这些图层是只读的。每个容器在其镜像层之上都有一个读/写层。只读层在容器之间共享,因此您将节省存储空间。容器将看到union mount所有图像层 + 读/写层。

在此处输入图像描述

于 2017-01-11T05:13:52.537 回答