Dockerfile VOLUME 不起作用

Dockerfile VOLUME not working

我真的被 docker VOLUME 的用法困住了。我有一个普通的 docker 文件:

FROM ubuntu:latest  
VOLUME /foo/bar
RUN touch /foo/bar/tmp.txt

我运行 $ docker build -f dockerfile -t test . 成功了。在此之后,我以交互方式 运行 将 shell 放入与创建的 test 图像的 运行 关联的 docker 容器中。也就是说,我运行$ docker run -it test

观察:

/foo/bar 已创建,但 为空

docker inspect test 安装信息:

"Volumes": {
  "/foo/bar": {}
}

好像根本没有挂载。任务看起来很简单,但我做错了什么吗?

编辑: 我希望保留在此已安装的卷目录中创建的数据。

VOLUME指令必须放在运行之后。

https://docs.docker.com/engine/reference/builder/#volume 所述:

Note: If any build steps change the data within the volume after it has been declared, those changes will be discarded.

如果您想知道 docker run 命令创建的卷的来源:

docker inspect --format='{{json .Mounts}}' yourcontainer

将给出如下输出:

[{
  "Name": "4c6588293d9ced49d60366845fdbf44fac20721373a50a1b10299910056b2628",
  "Source": "/var/lib/docker/volumes/4c6588293d9ced49d60366845fdbf44fac20721373a50a1b10299910056b2628/_data",
  "Destination": "/foo/bar",
  "Driver": "local",
  "Mode": "",
  "RW": true,
  "Propagation": ""
}]

Source 包含您要查找的路径。