88

如果我有一个 docker-compose 文件,例如:

version: "3"
services:
  postgres:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/db
volumes:
  db-data:

...然后docker-compose up做为db-data. 有没有办法通过删除这个卷docker-compose?如果它是一个匿名卷,那么docker-compose rm -v postgres就可以了。但就目前而言,我不知道如何在db-data不恢复docker命令的情况下删除卷。感觉这应该可以在docker-composeCLI 中实现。我错过了什么吗?

4

4 回答 4

114
docker-compose down -v

删除所有附加的卷。查看文档

于 2017-08-04T17:42:25.483 回答
43

无法使用docker-composecli 以删除特定命名卷为目标。相反,这可以使用dockercli 来实现。请参阅文档

用于docker volume ls查找特定卷的名称。

使用 删除卷docker volume rm VOLUME_NAME。您将需要使用该卷停止和删除容器。

一个示例方法:

# Stop and remove container's using the target volume
docker-compose stop NAME_OF_CONTAINER

# We need the force flag, "-f", as the container is still bound to the volume
docker-compose rm -f NAME_OF_CONTAINER

# Next find your volume name in the following list
docker volume ls

# Finally remove the volume
docker volume rm VOLUME_NAME
于 2019-10-17T01:05:46.757 回答
7

我和你有同样的问题,除了我想放弃我的 grafana 容器的工作状态,同时让其他容器运行,这些容器正在分离运行(即 sudo docker-compose up -d)。这是我想出的程序:

sudo docker-compose ps
sudo docker-compose stop grafana
sudo docker-compose rm --force grafana
sudo docker volume rm metricsmonitoring_grafana_data
sudo docker-compose up --force-recreate -d grafana

我不知道(没有进一步播放)如何最好地确定要删除的 docker 卷的名称。

这是在 docker-compose 版本 1.18.0

于 2019-11-26T23:20:55.080 回答
4

2022 年 1 月更新:

这将删除docker-compose中定义所有 容器网络图像

docker-compose down -v --rmi all

“-v”适用于所有卷

“--rmi all”适用于所有图像

于 2021-03-29T02:07:22.470 回答