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存储库
作为Docker新手,我很难学到这种差异。
在一个系统上:
docker run -it myImage /bin/bash
Run Code Online (Sandbox Code Playgroud)
->工作正常
在同一系统上(使用save):
docker save myImage -o myImage.tar
Run Code Online (Sandbox Code Playgroud)在第二个系统上(使用import):
docker import myImage.tar
Run Code Online (Sandbox Code Playgroud)
->效果很好,没有问题,只需要标记:
docker tag _the_assigned_tag myImage
Run Code Online (Sandbox Code Playgroud)在第二个系统上:
docker run -it myImage /bin/bash
Run Code Online (Sandbox Code Playgroud)
泊坞窗:来自守护程序的错误响应:OCI运行时创建失败:container_linux.go:345:启动容器进程引起“ exec:\” / bin / bash \”:stat / bin / bash:无此类文件或目录”:未知。
寻找该错误使我有多种原因,例如MountFlags="slave",但真正的原因却是本文中描述的原因:我应该使用load而不是import。不知道发生了什么,Docker的错误消息并没有使我对“导入”原因有任何了解,直到我偶然发现了这篇文章。
| 归档时间: |
|
| 查看次数: |
31063 次 |
| 最近记录: |