Docker镜像文件系统的关系和交互
Docker 是用于容器化应用程序的平台,它通过镜像和容器来实现应用的隔离和管理。在这个过程中,Docker 镜像的文件系统与宿主机的文件系统之间有特定的关系和交互方式。本文将详细讨论这些关系,并提供一些示例来帮助理解。
一、Docker 镜像的文件系统
Docker 镜像是应用程序的只读模板,包含了运行应用所需的一切,包括操作系统、软件包、代码等。镜像由多层文件系统构成,每一层代表一个变化或者添加。镜像本身是不可变的,确保了其一致性和稳定性。
-
示例:
在终端中输入以下命令来查看镜像的层次结构:
docker history <image-name>
这个命令将显示镜像中每一层的信息,例如创建时间、大小等。
docker history <image-name>
命令用于查看指定 Docker 镜像的历史构建信息。每一层镜像构建步骤的信息,包括对应的命令和创建时间等,都会显示出来。这个命令有几个可用的选项,以下是详细的解释:
-
--help
:- 用于显示命令的帮助信息,帮助理解命令及其选项的使用。
-
-H
,--human
:- 默认情况下这个选项被启用,输出的信息会在“大小”列以可读形式显示(例如 KB, MB)。你可以使用
--no-trunc
禁用此选项来显示完整大小信息。
- 默认情况下这个选项被启用,输出的信息会在“大小”列以可读形式显示(例如 KB, MB)。你可以使用
-
--no-trunc
:- 使用该选项时,会显示所有信息的完整输出,而不是被截断的形式。例如,镜像 ID 通常以较短的形式显示,而使用此选项后会显示完整的 SHA256 哈希字符串。
-
-q
,--quiet
:- 该选项用于只显示镜像的 ID 列表,省略其他详细信息。这对于需要获取层 ID 的自动化脚本或进一步处理非常有用。
-
--format
:- 允许你自定义输出格式。这个选项接收 Go 模板语法,可以指定哪些列需要显示以及如何显示。这是一个高度灵活的选项,可用来调整显示内容以满足特定需求。
实例
假设你需要查看名为 my-image
的镜像历史,你可以执行以下命令:
docker history my-image
如果你想查看不截断的输出:
docker history --no-trunc my-image
如果想以特定格式显示,可以使用 --format
:
docker history --format "{
{.ID}}: {
{.CreatedBy}}" my-image
二、容器的文件系统
当一个容器从镜像启动时,Docker 会在宿主机上为该容器分配一个独立的文件系统,基于镜像的文件系统构建,添加一个可写层(写时复制,Copy-On-Write)。
-
示例:
运行以下命令创建一个新容器: