【发布时间】:2022-07-25 20:57:51
【问题描述】:
我正在尝试像这样运行我的图像:
version: '3.8'
services:
gamit:
image: myimage
volumes:
- app:/app
volumes:
app:
driver: local
driver_opts:
type: none
device: ./app
o: bind
起初我的目标是在我的docker-compose.yml 文件附近有一个app 目录,(app 目录)应该从容器内部保留一个app 目录(它已经包含一些重要数据)。我的部署场景假设这个目录最初在主机上是空的,然后跟上容器内部的变化。当我使用docker compose up 运行它时,docker-compose.yml 附近的app 目录仍然是空的。我注意到 /var/lib/docker/volumes/myimage/_data 被创建并填充了来自容器的数据(我从另一个 stackoverflow 问题中假设我的 device: ./app 选项设置了主机目录的位置)。然后我删除了/var/lib/docker/volumes/myimage/ 目录,现在它给我一个错误docker failed to mount local volume mount no such file or directory。
我的总体目标是最初使用空的app 目录运行docker compose up,从容器内部填充它,然后在容器内部进行所有更改。
【问题讨论】:
-
您通常不应该更改
/var/lib/docker中的任何内容,并且删除那里的卷目录几乎肯定会导致您现在看到的错误。你能改用较短的volumes: ['./app:/app']bind-mount 语法吗? -
这是题外话吗?您可以在 serverfault.com 上询问
-
@DavidMaze 已尝试使用较短的
volumes: ['./app:/app']绑定挂载语法运行。它在我的docker-compose.yml文件附近创建了一个空的app目录,并且容器内的app目录变为空。我的目标是让这个目录包含来自容器内部的数据。
标签: docker docker-compose