实际上我是Docker生态系统的新手,我试图了解容器在基本映像上的确切运作方式?基本映像是否已加载到容器中?
我已经通过Docker文档,它说在一个图像层顶部形成一个读写容器层,这是容器层,但我感到困惑的是图像是不可变的,对吗?那么图像在哪里运行,是在VM中的Docker引擎内部以及容器实际上是如何发挥作用的?
答案 0 :(得分:3)
容器如何在基本图像上运行? 基本映像是否已加载到容器中?
Docker
容器将一个软件包装在一个完整的filesystem
中,其中包含运行所需的一切:代码,运行时,系统工具,系统库 - 可以安装在服务器上的任何东西。
与FreeBSD Jails
和Solaris Zones
类似,Linux容器是独立的执行环境 - 具有自己的独立CPU,内存,块I / O和网络资源(使用CGROUPS
内核功能) - 共享主机操作系统的内核。结果就像虚拟机一样,但却消除了客户操作系统的所有重量和启动开销。
这就是说每个发行版都有自己的官方docker
图片(library
),附带最小的二进制文件,考虑docker
的最佳做法,并且已准备就绪。
我很困惑,图像是不可变的,对吧?图像在哪里运行,是在VM中的Docker引擎内部以及容器实际上是如何发挥作用的?
Docker
过去常常使用AUFS
,仍在debian
上使用它,并在其他发行版上使用AUFS
等文件系统,如overlay
等。 AUFS
提供分层。每个图像由图层组成,这些图层是只读的。每个容器在其图像层顶部都有一个读/写层。只读层可以在容器之间共享,因此可以节省存储空间。容器将看到所有图像层的union mount
+读/写层。