docker-compose挂载音量保持不变

时间:2017-03-15 11:50:11

标签: docker-compose docker-volume

我在我的一个项目中使用了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

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

2 个答案:

答案 0 :(得分:1)

您可以在泊坞窗运行中使用--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引擎删除/ foo卷但不是很棒   体积。

答案 1 :(得分:1)

只需使用down命令删除卷:

docker-compose down -v