如何使用 docker container export 命令导出容器文件系统

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何使用 docker container export 命令导出 Docker 容器的文件系统。我们将从创建并运行一个简单容器开始。

完成容器创建后,你将探索导出容器文件系统的不同方法。这包括直接将文件系统导出到标准输出(STDOUT)、使用 shell 重定向将其导出到文件,以及最后使用 docker container export 命令的 --output 选项将其导出到文件。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/save("Save Image") subgraph Lab Skills docker/run -.-> lab-555109{{"如何使用 docker container export 命令导出容器文件系统"}} docker/ls -.-> lab-555109{{"如何使用 docker container export 命令导出容器文件系统"}} docker/ps -.-> lab-555109{{"如何使用 docker container export 命令导出容器文件系统"}} docker/save -.-> lab-555109{{"如何使用 docker container export 命令导出容器文件系统"}} end

创建并运行简单容器

在这一步骤中,我们将学习如何创建并运行一个简单的 Docker 容器。容器是一种标准的软件单元,它将代码及其所有依赖项打包,使得应用程序能够在不同的计算环境中快速可靠地运行。

我们将使用 docker run 命令来创建和运行容器。基本语法是 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

让我们使用 ubuntu 镜像和 echo 命令运行一个简单容器。ubuntu 镜像是精简版的 Ubuntu 操作系统镜像。

docker run ubuntu echo "Hello from Docker!"

当你首次运行此命令时,Docker 会先检查本地是否存在 ubuntu 镜像。如果不存在,它会从 Docker Hub(默认的镜像仓库)拉取该镜像。然后,它会基于该镜像创建一个新容器,并在容器内执行 echo "Hello from Docker!" 命令。命令执行完毕后,容器将停止运行。

你应该能在终端看到输出 Hello from Docker!

现在,让我们尝试运行一个持续运行的容器。我们可以使用 -d 选项让容器在后台运行(分离模式),并使用 tail -f /dev/null 命令让容器保持运行状态而不消耗过多资源。我们还会通过 --name 选项为容器命名,方便后续引用。

docker run -d --name my-ubuntu-container ubuntu tail -f /dev/null

该命令会拉取 ubuntu 镜像(如果尚未存在),创建一个名为 my-ubuntu-container 的容器,并以分离模式运行 tail -f /dev/null 命令。命令执行后会输出容器 ID。

要验证容器是否正在运行,可以使用 docker ps 命令查看运行中的容器列表。

docker ps

你应该能看到运行中的容器列表,其中包含 my-ubuntu-container

将容器文件系统导出至标准输出

在本步骤中,我们将学习如何导出 Docker 容器的文件系统。导出容器文件系统会创建一个包含容器内容的 tar 归档文件,这在创建备份、共享容器状态或检查容器内容时非常有用。

我们将使用 docker export 命令来导出文件系统,其基本语法为 docker export [OPTIONS] CONTAINER

让我们导出上一步创建的 my-ubuntu-container 容器的文件系统。默认情况下,docker export 会将 tar 归档文件输出至标准输出(STDOUT)。

docker export my-ubuntu-container

运行此命令时,你将在终端看到二进制数据流。这是容器文件系统的 tar 归档文件。由于是二进制数据,在终端中无法直接阅读。

为了更好地理解导出的内容,我们可以将输出通过管道传递给能处理 tar 归档文件的命令(如 tar)。但在本步骤中,我们仅关注如何导出至标准输出。

docker export 命令会导出容器的完整文件系统,包括自容器创建以来所做的所有更改。

使用重定向将容器文件系统导出至文件

在上一步中,我们将容器文件系统导出到了标准输出。虽然这种方式适合将输出传递给其他命令,但通常更实用的做法是将导出的文件系统保存为文件。

我们可以通过 shell 重定向来实现这一目的。> 操作符会将命令的标准输出重定向到指定文件。

让我们将 my-ubuntu-container 容器的文件系统导出到当前目录(~/project)下名为 ubuntu-filesystem.tar 的文件中。

docker export my-ubuntu-container > ubuntu-filesystem.tar

该命令会执行 docker export my-ubuntu-container 并将二进制输出(tar 归档文件)重定向到 ubuntu-filesystem.tar 文件中。这次你将不会在终端看到二进制数据。

命令执行完成后,你可以使用 ls -lh 命令验证文件是否创建成功并查看其大小。

ls -lh ubuntu-filesystem.tar

你应该能看到列出的 ubuntu-filesystem.tar 文件及其大小。文件大小取决于 ubuntu 镜像的内容。

你还可以使用 file 命令确认生成的文件确实是 tar 归档文件。

file ubuntu-filesystem.tar

输出结果应显示该文件为 tar 归档文件,例如 ubuntu-filesystem.tar: POSIX tar archive

使用 --output 选项将容器文件系统导出至文件

在上一步中,我们使用 shell 重定向 (>) 将导出的容器文件系统保存到文件。Docker 还提供了一个专用选项 --output(或简写 -o),可以直接在 docker export 命令中指定输出文件。这种方式有时比使用 shell 重定向更加方便。

让我们再次导出 my-ubuntu-container 的文件系统,这次使用 --output 选项,并将其保存到当前目录(~/project)下名为 ubuntu-filesystem-output.tar 的文件中。

docker export --output ubuntu-filesystem-output.tar my-ubuntu-container

该命令与使用重定向效果相同,但采用了 Docker 特有的选项。tar 归档文件将直接保存到指定文件中。

命令执行完成后,你可以使用 ls -lh 验证新文件的创建情况和大小。

ls -lh ubuntu-filesystem-output.tar

你应该能看到列出的 ubuntu-filesystem-output.tar 文件,其大小应与上一步创建的 ubuntu-filesystem.tar 文件相近。

你也可以使用 file 命令确认 ubuntu-filesystem-output.tar 是 tar 归档文件。

file ubuntu-filesystem-output.tar

输出结果应确认这是一个 tar 归档文件。

使用 --output 选项是指定导出文件系统目标路径的简洁方式。

总结

在本实验中,我们学习了如何创建和运行简单的 Docker 容器。我们使用 docker run 命令在容器内执行命令,并以特定名称在后台模式运行容器。同时,我们还使用 docker ps 命令来验证容器是否正在运行。

随后,我们探索了如何使用 docker export 命令导出容器文件系统。我们学习了如何将文件系统导出到标准输出(STDOUT),以及如何将输出重定向到文件。最后,我们还学习了如何配合 docker export 使用 --output 选项直接指定输出文件。