了解图像层
了解图像层 正如您在 ,容器镜像由层组成。这些层中的每一层一旦创建,都是不可变的。但是,这实际上意味着什么?这些层如何用于创建容器可以使用的文件系统? 映像中的每一层都包含一组文件系统更改 – 添加、删除或修改。让我们看一个理论图像: 第一层添加基本命令和包管理器,例如 apt。 第二层安装Python运行时和pip以进行依赖管理。 第三层复制应用程序的特定requirements.txt 文件。 第四层安装该应用程序的特定依赖项。 第五层复制应用程序的实际源代码。 这个例子可能看起来像: 这是有益的,因为它允许在图像之间重用图层。例如,假设您想要创建另一个 Python 应用程序。由于分层,您可以利用相同的 Python 基础。这将使构建速度更快,并减少分发图像所需的存储量和带宽。图像分层可能类似于以下内容: 图层允许您通过重用其他图像的基础层来扩展图像,从而允许您仅添加应用程序所需的数据。 内容寻址存储和联合文件系统使分层成为可能。虽然这需要技术性,但它的工作原理如下: 下载每一层后,它会被提取到主机文件系统上自己的目录中。 当您从映像运行容器时,会创建一个联合文件系统,其中层彼此堆叠,从而创建一个新的统一视图。 当容器启动时,它的根目录被设置为这个统一目录的位置,使用chroot. 创建联合文件系统时,除了镜像层之外,还会专门为正在运行的容器创建一个目录。这允许容器进行文件系统更改,同时允许原始图像层保持不变。这使您能够从同一底层映像运行多个容器。 在本实践指南中,您将使用命令手动创建新的图像层 。请注意,您很少会以这种方式创建映像,因为您通常会 。但是,它让我们更容易理解它是如何工作的。…