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

标签 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 文件中指定卷设置,因为运行命令已经有很多参数来重定向端口和设备..

有什么想法吗?

最佳答案

您必须在运行容器时指定卷目的地。 Read about volumes

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

关于Docker volume 每次都重新创建一个新的目标路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41930949/

相关文章:

http - 如何从 Docker 发送 http 请求到本地主机或虚拟机

docker - 使用 Docker for Mac 创建 swarm 集群

docker - Kubernetes 使用基础镜像填充

docker - 如何从主机本身获取Docker主机的IP地址(将在容器中使用)

docker - 限制完全关闭后启动容器

docker - 如何停止容器本身?

docker - 在 docker-compose.yml 中定义卷

docker - 为什么 composer 在我的 Docker 容器中找不到 composer.json 文件?

docker - 为什么 docker-compose 使用用户 :group 999:999? 创建目录/文件

kubernetes - 在 kubernetes 中复制 docker-compose 卷行为