docker-compose挂载音量保持不变

问题描述 投票:0回答:2

我正在我的一个项目中使用docker-compose。在开发过程中,我将源目录挂载到我的一个docker服务中的卷上,以便于开发。同时,我有一个db服务(psql),用于为持久数据存储安装命名卷。

我从解决方案开始,一切正常

$ docker-compose up -d

当我检查我的卷时,我看到了命名和“未命名”(源卷)。

$ docker volume ls
DRIVER              VOLUME NAME
local               226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72
local               myproject_data

我遇到的问题是,当我这样做时

$ docker-compose down
...
$ docker volume ls
DRIVER              VOLUME NAME
local               226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72
local               myproject_data

两卷都保持不变。每次我跑

$ docker-compose down
$ docker-compose up -d

为我的源安装创建了一个新卷

$ docker volume ls
DRIVER              VOLUME NAME
local               19181286b19c0c3f5b67d7d1f0e3f237c83317816acbdf4223328fdf46046518
local               226ba7af9689c511cb5e6c06ceb36e6c26a75dd9d619360882a1012cdcd25b72
local               myproject_data

我知道这不会发生在我的部署服务器上,因为它不会挂载源,但有没有办法不使挂载源持久化?

docker-compose docker-volume
2个回答
1
投票

您可以在docker run中使用--rm选项。要与docker-compose一起使用,您可以使用它

docker-compose rm -v停止你的容器后docker-compose stop

如果你浏览关于Data volumes的文档,它就提到了

即使删除容器本身,数据量仍然存在。

这意味着,停止容器不会删除它创建的卷,无论是命名还是匿名。

现在,如果你进一步阅读Removing volumes

删除容器后,Docker数据卷仍然存在。您可以创建命名或匿名卷。命名卷在容器外部具有特定的源表单,例如awesome:/ bar。匿名卷没有特定的来源。删除容器时,应指示Docker Engine守护程序清除匿名卷。为此,请使用--rm选项,例如:

$ docker run --rm -v /foo -v awesome:/bar busybox top

此命令创建匿名/ foo卷。移除容器后,Docker Engine会删除/ foo卷但不会删除令人敬畏的卷。


1
投票

只需使用down命令删除卷:

docker-compose down -v
© www.soinside.com 2019 - 2024. All rights reserved.