【问题标题】:Remove a named volume with docker-compose?使用 docker-compose 删除命名卷?
【发布时间】:2018-01-12 16:43:03
【问题描述】:

如果我有一个 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 就可以了。但就目前而言,我不知道如何删除db-data 卷而不恢复到docker 命令。感觉这应该可以在docker-compose CLI 中实现。我错过了什么吗?

【问题讨论】:

    标签: postgresql docker docker-compose volumes docker-named-volume


    【解决方案1】:
    docker-compose down -v
    

    删除所有附加的卷。见docs

    【讨论】:

    • 你也可以使用docker-compose rm -f -v
    • @herm 谢谢,工作。正如文档中明确指出的那样,我上面的评论 notnamed 卷有效。顺便说一句,我发现同名选项(-v)的行为完全不同,这取决于命令(rm vs down),这非常令人困惑。
    • 虽然不是docker-compose 本身,您也可以使用docker volume rm [name] 删除卷,例如docker volume rm db-data。另请参阅docker volume prune
    • 这只会删除匿名创建的卷,而不是命名的卷。
    • 我相信问题是询问如何删除特定的命名卷,而不是全部。这可能吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我和你有同样的问题,除了我想放弃我的 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 版上

      【讨论】:

        【解决方案4】:

        2022 年 1 月更新:

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

        docker-compose down -v --rmi all
        

        "-v" 适用于所有卷

        "--rmi all" 适用于所有图片

        【讨论】:

          猜你喜欢
          • 2016-10-08
          • 1970-01-01
          • 2017-11-26
          • 1970-01-01
          • 2021-06-01
          • 1970-01-01
          • 2021-01-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多