Docker卷每次都会重新创建一个新的目标路径

时间:2017-01-30 07:39:29

标签: docker docker-volume

我创建了以下docker文件

FROM resin/rpi-raspbian:jessie-20160831
.. 
RUN mkdir -p /usr/bin/asmp
COPY src /usr/bin/asmp/
VOLUME /usr/bin/asmp/data
..

复制操作会复制目录结构,如下所示:

data
   db.sqlite3 
web
    ...
worker
    ...

我不仅仅是使用以下内容启动容器:

docker run -p 8000:8000 asmp

当我进行检查时,我看到了这一点:

 "Mounts": [
        {
            "Name": "30ccc87580cd85108cb4948798612630640b5564f66de848a4e2f77db8148d3a",
            "Source": "/var/lib/docker/volumes/30ccc87580cd85108cb4948798612630640b5564f66de848a4e2f77db8148d3a/_data",
            "Destination": "/sys/fs/cgroup",
            "Driver": "local",
            "Mode": "",
            "RW": true,
            "Propagation": ""
        },
        {
            "Name": "c4473031d209eb29d3f454be68325c6b1f33aa660185bf57e8abb91a56bb260e",
            "Source": "/var/lib/docker/volumes/c4473031d209eb29d3f454be68325c6b1f33aa660185bf57e8abb91a56bb260e/_data",
            "Destination": "/usr/bin/asmp/data",
            "Driver": "local",
            "Mode": "",
            "RW": true,
            "Propagation": ""
        }
    ],

当我停止容器(通过杀死它)而不是再次启动它时,它会为另一个目录创建一个新卷。所以我想知道如何处理这种情况?我开始/停止容器错了吗?或者我应该以不同方式指定音量?我知道您可以指定目标路径,但我可以(并且应该)在docker文件中指定它吗?我宁愿在docker文件中指定卷设置,因为run命令已经有很多参数来重定向端口和设备..

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

运行容器时,必须指定卷目标。 Read about volumes

docker run -p 8000:8000 --volume=<path_on_host>:/usr/bin/asmp/data asmp