我正在尝试以以下方式运行我的镜像:
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
目录(它已经包含一些重要数据)。 我的部署场景假定此目录在主机上最初为空,然后跟随容器内的更改。当我使用docker compose up
运行它时,我的 docker-compose.yml
旁边的 app
目录仍然为空。我注意到会创建并填充 /var/lib/docker/volumes/myimage/_data
目录,并将来自容器的数据填充进去(我认为我的选项 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']
绑定挂载语法吗? - David Mazevolumes: ['./app:/app']
绑定挂载语法运行。它在我的docker-compose.yml
文件附近创建了一个空的app
目录,并且容器内部的app
目录变为空了。我的目标是让这个目录包含来自容器内部的数据。 - r69