Docker中的import和load有什么区别?

rdu*_*upz 56 docker docker-image

我理解export(对于容器)和save(对于图像)之间的区别.但是在一天结束时,保存或导出产生的tarball应该用作图像.

那么为什么有两个命令来从tarball制作图像呢?

Von*_*onC 74

docker save确实会生成一个tarball,但是包含所有父层,以及所有标签+版本.

docker export 也产生了一个tarball,但没有任何层/历史.

当人们想要"压平"图像时经常使用它,如Thomas Uhrig的 " Flatten a Docker container or image " 所示:

docker export <CONTAINER ID> | docker import - some-image-name:latest
Run Code Online (Sandbox Code Playgroud)

但是,一旦生成了这些tarball,加载/导入就会:

  • docker import一个 tarball 创建一个图像,甚至不是图像(只是一个文件系统要导入为图像)

创建一个空的文件系统映像并导入tarball的内容

  • docker load从tarred存储库创建潜在的多个图像(因为docker save可以在tarball中保存多个图像).

从文件或标准输入流加载tarred存储库


qoo*_*tec 5

作为Docker新手,我很难学到这种差异。

寻找该错误使我有多种原因,例如MountFlags="slave",但真正的原因却是本文中描述的原因:我应该使用load而不是import。不知道发生了什么,Docker的错误消息并没有使我对“导入”原因有任何了解,直到我偶然发现了这篇文章。