"删除"Dockerfile中的VOLUME

tyr*_*dis 23 docker docker-compose

我有一个Dockerfile扩展FROM声明了一个的图像VOLUME.有没有办法以这种方式覆盖VOLUME指令,它"删除" VOLUME

Ale*_*hin 23

没有.

唯一的方法是,如果克隆Dockerfile用作基础图像的图像(输入的图像FROM)并VOLUME手动删除指令.然后构建它并在您的FROM基础中使用.

  • 谢谢!对我来说听起来像在构建时应该发出警告,这恰好发生了. (4认同)
  • 这种限制有原因吗?我认为这可能与安全相关,但我想不出任何方法如何滥用子 Dockerfile 中的卷删除。 (2认同)
  • @Mitja不,只是Dockerfile指令是以这样的方式编写的,你不能覆盖父声明的卷.它具体写在[这里](https://docs.docker.com/engine/reference/builder/#notes-about-specifying-volumes):`如果任何构建步骤在声明后更改卷内的数据,那些变化将被丢弃 (2认同)

Gui*_*eim 6

在某些情况下,您无法修改原始 Dockerfile - 在我的情况下是生产中的图像。唯一的机会是修改元数据(使用 docker 保存/加载操作)。由于我需要经常这样做,因此我为此创建了一个小脚本,如果可以帮助您,请查看docker-copyedit