使用Docker save后擦除Docker中的映像更改

时间:2018-08-05 21:21:53

标签: docker

我遇到了一个问题,我在运行Docker映像时可以看到对其进行了正确的修改,但是使用Docker save后,这些更改不会保留在生成的.tar文件中。

背景:虽然此流程不是最佳实践/理想方法,但我没有原始的Dockerfile来通过更改来重新创建映像,因此我改从下面的步骤进行修改。

为方便起见,我们将基础图像称为“原始”图像,将修改后的图像称为“ newimage”。

这是采取的步骤:

  • docker load --input original.tar
  • docker run -it --entrypoint bash original

  • 在容器中,用sed进行了一小行编辑: sed -i 's/original_line/updated_line/g' <filename>(还尝试使用VIM和nano进行此更新,以测试编辑器和就地编辑的差异,但这根本没有改变.tar的结果)

  • 退出了容器
  • 重新启动相同的容器
  • docker commit <containerID> newimage (以获取对新映像所做的容器更改的快照)
  • docker run -it --entrypoint bash newimage<br>
  • 通过cat文件视图验证图像具有正确的更新

  • docker save newimage > newimage.tar

  • Tar生成成功,但是当我解压缩并转到各个图层时,可以看到我的行更改不再存在于预期的文件中。

我还尝试了使用相同的行为,使用“ FROM original”通过Dockerfile构建方法重新创建此映像。我认为卷可以对数据持久性有所帮助,但是由于新映像具有必要的更改,因此我不确定在这种情况下是否需要卷。

我不认为这只是tar图层视图的问题,因为我的程序仍在为旧行抛出错误(好像从未进行过任何更改)。但是,谁知道。 :)

关于可能发生的事情的任何想法? Docker save文档在官方文档中有所限制,我已经尝试了所有其他所有相关解决方案的文章,但我会继续挖掘。

0 个答案:

没有答案