导出和导入 Docker 容器文件系统

可以将 Docker 容器的文件系统内容保存到 tarball 存档文件中。这在将容器文件系统移动到不同主机的过程中非常有用,例如,如果数据库容器有重要更改,则无法在其他位置复制这些更改。请注意,最好使用 docker run 命令或 docker-compose.yml 文件从更新的映像创建一个全新的容器,而不是导出和移动容器的文件系统。Docker 的一部分功能是其创建图像和容器的声明式风格的可审计性和责任性。通过使用 docker exportdocker import,由于在容器的文件系统内部从其原始状态进行的更改混淆,因此该功率被抑制。

docker export -o redis.tar redis

上面的命令将创建一个空图像,然后将 redis 容器的文件系统导出到这个空图像中。要从 tarball 存档导入,请使用:

docker import ./redis.tar redis-imported:3.0.7

此命令将创建 redis-imported:3.0.7 映像,从中可以创建容器。也可以在导入时创建更改,以及设置提交消息:

docker import -c="ENV DEBUG true" -m="enable debug mode" ./redis.tar redis-changed

可用于 -c 命令行选项的 Dockerfile 指令是 CMDENTRYPOINTENVEXPOSEONBUILDUSERVOLUMEWORKDIR