我在我的一个项目中使用了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
我知道在我的部署服务器上不会发生这种情况,因为它不会挂载源,但有没有办法不使挂载源持久化?
答案 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