docker图像和图层如何工作?

时间:2017-01-11 04:54:08

标签: azure docker docker-container docker-image

实际上我是Docker生态系统的新手,我试图了解容器在基本映像上的确切运作方式?基本映像是否已加载到容器中?

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

1 个答案:

答案 0 :(得分:3)

  

容器如何在基本图像上运行?   基本映像是否已加载到容器中?

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

FreeBSD JailsSolaris Zones类似,Linux容器是独立的执行环境 - 具有自己的独立CPU,内存,块I / O和网络资源(使用CGROUPS内核功能) - 共享主机操作系统的内核。结果就像虚拟机一样,但却消除了客户操作系统的所有重量和启动开销。

这就是说每个发行版都有自己的官方docker图片(library),附带最小的二进制文件,考虑docker的最佳做法,并且已准备就绪。

  

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

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

enter image description here