简介
在本实验中,你将学习如何使用 docker container export
命令导出 Docker 容器的文件系统。我们将从创建并运行一个简单容器开始。
完成容器创建后,你将探索导出容器文件系统的不同方法。这包括直接将文件系统导出到标准输出(STDOUT)、使用 shell 重定向将其导出到文件,以及最后使用 docker container export
命令的 --output
选项将其导出到文件。
在本实验中,你将学习如何使用 docker container export
命令导出 Docker 容器的文件系统。我们将从创建并运行一个简单容器开始。
完成容器创建后,你将探索导出容器文件系统的不同方法。这包括直接将文件系统导出到标准输出(STDOUT)、使用 shell 重定向将其导出到文件,以及最后使用 docker container export
命令的 --output
选项将其导出到文件。
在这一步骤中,我们将学习如何创建并运行一个简单的 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
。
在上一步中,我们使用 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
选项直接指定输出文件。