使用 docker-compose 删除命名卷?

Remove a named volume with docker-compose?

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

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

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

docker-compose down -v

删除所有附加的卷。参见 docs

无法使用 docker-compose cli 来针对特定命名卷的删除。相反,这可以使用 docker cli 来实现。见 docs.

使用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

我遇到了和你一样的问题,只是我想放弃我的 grafana 容器的工作状态,同时让其他容器 运行 处于分离状态 运行(即 sudo docker-组合-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

2022 年 1 月更新:

这将删除 所有 the containers, networksvolumesimagesdocker-compose.[=11 中定义=]

docker-compose down -v --rmi all

"-v" 用于 所有卷

"--rmi all" 用于 所有图像