我了解 export
(用于容器)和 save
(用于图像)之间的区别。但是在一天结束时,保存或导出生成的压缩包应该用作 _图像_。
那么为什么有 2 个命令可以从 tarball 制作图像呢?
原文由 rdupz 发布,翻译遵循 CC BY-SA 4.0 许可协议
我了解 export
(用于容器)和 save
(用于图像)之间的区别。但是在一天结束时,保存或导出生成的压缩包应该用作 _图像_。
那么为什么有 2 个命令可以从 tarball 制作图像呢?
原文由 rdupz 发布,翻译遵循 CC BY-SA 4.0 许可协议
作为一个 Docker 新手,我 很难 学到这种差异。
docker run -it myImage /bin/bash
–> 工作正常
docker save myImage -o myImage.tar
docker import myImage.tar
–> 效果很好,没有问题,只需要标记:
docker tag _the_assigned_tag myImage
docker run -it myImage /bin/bash
docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:345:启动容器进程导致“exec:\”/bin/bash\“:stat /bin/bash:没有这样的文件或目录”:未知。
寻找该错误使我想到了各种原因,例如 MountFlags="slave"
,但真正的原因竟然是这篇文章中描述的原因:我应该使用加载而不是导入。不知道发生了什么,Docker 的错误消息并没有让我在任何意义上走上“导入”原因的轨道,直到我偶然发现了这篇文章。
原文由 qootec 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答2.4k 阅读✓ 已解决
2 回答793 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答1.4k 阅读
1 回答1.6k 阅读
2 回答1.2k 阅读
1 回答955 阅读
docker save
确实会生成一个 tarball, 但 包含所有父层和所有标签 + 版本。docker export
也会产生一个压缩包,但没有任何层/历史。它通常在想要 “展平”图像 时使用,如 Thomas Uhrig 的“展 平 Docker 容器或图像”中所示:
但是,一旦生成了这些 tarball,加载/导入就可以:
docker import
从 一个 甚至 不是图像的 tarball 创建 一个 图像(只是一个您想要作为图像导入的文件系统)docker load
从一个 tarred 存储库创建可能的 多个 图像(因为docker save
可以将 多个 图像保存在一个 tarball 中)。