docker图片和图层如何工作?

其实我是Docker生态系统的新手,我正在试图理解一个容器如何在基础图像上工作? 基础图像是否被加载到容器中?

我已经通过了Docker文档,其中说,一个读写容器层形成在容器层的图像层的顶部,但我感到困惑的是图像是不可变的,对吗? 然后,图像在哪里运行,它在虚拟机中的Docker引擎中,以及容器如何进入游戏?

一个容器如何在基础图像上工作? 基础图像是否被加载到容器中?

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

FreeBSD JailsSolaris Zones ,Linux容器是独立的执行环境 – 具有独立的CPU,内存,块I / O和networking资源(使用CGROUPS内核function) – 共享主机操作的内核系统。 结果是感觉像一个虚拟机,但摆脱了来宾操作系统的所有重量和启动开销。

这就是说每个发行版都有它自己的官方docker图片( library ),这是与最小的二进制文件一起发货,考虑到docker的最佳实践,它已经准备好build立。

我很困惑,形象是不可改变的,对吧? 图像在哪里运行,它在虚拟机中的Docker引擎中,以及容器如何进入游戏?

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

在这里输入图像说明