什么是 Docker 镜像层?
Docker 镜像由多个层组成,它们共同提供您在容器中看到的内容。但实际上什么是镜像,它与完整镜像有何不同?
在本文中,您将学习如何区分这两个概念以及为什么区别很重要。虽然您可以在不彻底了解层的情况下使用 Docker,但了解它们的用途将有助于您确定优化机会。
什么是图像?
一个 Docker “镜像”的行为就像一个模板,可以从中创建一致的容器。如果 Docker 是传统的虚拟机,则可以将映像比作用于安装 VM 的 ISO。这不是一个可靠的比较,因为Docker 在概念和实现方面都不同于 VM,但它仍然是一个有用的起点。
映像定义了新容器的初始文件系统状态。它们将您的应用程序的源代码及其依赖项捆绑到一个独立的包中,该包可以与容器运行时一起使用。在图像中,文件系统内容表示为多个独立的层。
什么是图层?
层是 Docker 镜像构建方式的结果。Dockerfile 中的每一步都会创建一个新的“层”,它本质上是自上一步以来文件系统更改的差异。元数据指令(例如LABEL和)MAINTAINER不会创建层,因为它们不会影响文件系统。
此图像有两个指令 (COPY 和RUN),因此它将创建两个图层:
FROM ubuntu:latest
COPY foo.txt