【问题标题】:How to remove docker-volume of (removed) docker-container?如何删除(已删除)docker-container的docker-volume?
【发布时间】:2022-01-19 19:56:13
【问题描述】:

我有运行大量 docker 容器的测试。他们每个人都有一个卷。

如何知道需要删除的卷名?

例如:

~ docker run -d registry:2 
~ docker volume inspect c80fc65a79039d70cf54b3af3ab66b378dec42d0757928ae94277b197d8d8104
[
    {
        "CreatedAt": "2020-08-14T11:33:50Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/c80fc65a79039d70cf54b3af3ab66b378dec42d0757928ae94277b197d8d8104/_data",
        "Name": "c80fc65a79039d70cf54b3af3ab66b378dec42d0757928ae94277b197d8d8104",
        "Options": null,
        "Scope": "local"
    }
]

手动停止并删除registry:2容器后,卷仍然存在。

我不想删除所有卷,因为其中一些卷仍在使用中。

【问题讨论】:

    标签: docker docker-volume


    【解决方案1】:

    您不需要自己确定卷名。实际上,这里有多种选择。

    如果要清理,可以在docker run 上使用--rm 标志

    参考:docs.docker.com: Clean Up (--rm)

    如果您设置了 --rm 标志,Docker 还会在容器被移除时移除与容器关联的匿名卷。这类似于运行 docker rm -v my-container。仅删除未指定名称的卷。比如运行时:

    使用docker system prune --volumes 命令清理至少一个容器未使用的所有卷

    参考:docs.docker.com: docker system prune

    删除所有未使用的容器、网络、图像(包括悬空的和未引用的)以及可选的卷。

    获取关联卷

    如果你真的想得到一个容器的卷,你可以使用 sn-p

    docker inspect -f '{{ .Name }}{{ printf "\n" }}{{ range .Mounts }}{{ printf "\n\t" }}{{ .Type }} {{ if eq .Type "bind" }}{{ .Source }}{{ end }}{{ .Name }} => {{ .Destination }}{{ end }}{{ printf "\n" }}' <continaer-id>
    

    【讨论】:

      【解决方案2】:

      您可以手动删除未使用的卷:

      docker volume rm c80fc65a79039d70cf54b3af3ab66b378dec42d0757928ae94277b197d8d8104
      

      prune所有未使用的卷

      docker volume prune
      

      删除所有未使用的本地卷。未使用的本地卷是那些未被任何容器引用的本地卷

      【讨论】:

      • 我如何知道我需要删除的卷名?这就是我要找的...
      • 你检查prune了吗?
      【解决方案3】:

      要清理我正在使用的所有匿名卷:

      docker volume ls | awk '{if (length($2)==64 && $2!~/-/ && $2!~/_/) print $2}' | xargs -L1 docker volume rm
      

      如果您想知道为什么存在这些随机卷,请阅读更多here

      【讨论】:

        【解决方案4】:

        这个 SO 答案可能对任何人都有帮助:

        删除与容器关联的卷:https://stackoverflow.com/a/45973133/4883721

        【讨论】:

          猜你喜欢
          • 2023-02-10
          • 2020-02-17
          • 1970-01-01
          • 2022-12-26
          • 2023-03-06
          • 2021-03-04
          • 1970-01-01
          • 2014-02-19
          • 2013-07-13
          相关资源
          最近更新 更多