从基础镜像撤消 Dockerfile VOLUME 指令

Undo Dockerfile VOLUME directive from a base image

我有一张来自Postgres官方镜像的镜像,其Dockerfile包含以下内容:

VOLUME /var/lib/postgresql/data

我想根据这个官方图像创建我自己的图像,但我不希望它引用任何卷。我希望 Postgres 数据在我的图像中。

有什么想法吗?

您无法撤消 VOLUME 指令。

在 github 上查看这个未解决的问题:Reset properties inherited from parent image #3465

根据这些问题的答案,有一些解决方案:

  • How to remove a volume in a Dockerfile

您可以复制基本图像并手动删除 VOLUME


解决方法,请参阅 docker-copyedit。该脚本会将 docker save 和图像放入存档以修改其元数据,然后 docker load 将其恢复为图像。


如果您不关心体积而只想将数据放在图像中,则必须为数据使用另一个位置,您可以使用环境变量 PGDATA 来定义新位置。