Dockerfile VOLUME无法正常工作

时间:2016-06-15 13:58:07

标签: docker dockerfile docker-volume

我真的不习惯使用docker VOLUME了。我有一个普通的dockerfile:

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": {}
}

似乎根本没有安装。这项任务看起来很顺利,但我做错了吗?

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

1 个答案:

答案 0 :(得分:5)

必须在RUN之后放置VOLUME指令。

Error installing MvvmCross.HotTuna.MvvmCrossLibraries v4.0.0-beta1 in Xamarin Studio中所述:

  

注意:如果任何构建步骤在声明后更改了卷中的数据,那么这些更改将被丢弃。

如果您想知道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": ""
}]

来源包含您要查找的路径。