【问题标题】:Why some volumes are already created inside docker engine?为什么在 docker 引擎中已经创建了一些卷?
【发布时间】:2021-02-10 05:39:16
【问题描述】:

每当我运行以下命令时:

docker volume ls

我可以看到我的 docker 引擎中已经创建了一些卷。

DRIVER    VOLUME NAME
local     5df9458932cd504e10b2b37856c434cbdf3876733684b100cbf390c965ac9581
local     6f7037bc33861a5e42a9f8bcd699f8184ff1916a297a718ccc4df5f369d07530
local     8a86c462020f35f1051b47c48555228a1df359251f2496c32ed45a9081bb1872
local     85ed838d2e081eddc672fd8ddb15bbb3eecc73adb270678c98b7c50a03ecb2fc
  1. 为什么要创建这些卷?

  2. 我怎样才能找到它们存在的目的?

【问题讨论】:

  • 您在什么系统上看到这些卷?我在 Linux 和 Windows(Docker 桌面)上都没有得到这样的输出。
  • @Tekki 他们发生是因为有人创建了这样的容器“ -v ~/data : /data ”......因为没有卷的名称并且只提供了路径,所以我得到了这样的结果:) 有人在下面清除了它!

标签: docker docker-compose dockerfile docker-volume


【解决方案1】:

如果您使用没有名称或主机挂载点的卷启动 Docker 容器,Docker 将为它们创建一个唯一名称。这些docs 简要提到了这样的匿名卷。最有可能的是,Dockerfile 有一个 VOLUME 部分,并且未使用相应的 --mount-v 标志运行以将某些本地卷绑定到容器的卷。

另见this devops stack exchange answer

以下是创建匿名卷的示例:

带有匿名卷的 Dockerfile:

FROM alpine:3.9

VOLUME ["/root", "/test"]

在不安装或以其他方式命名/root/test 卷的情况下构建/运行容器:

$ docker volume ls
DRIVER    VOLUME NAME

$ docker build -t test .
$ docker run -it --rm -d --name volume-test  test:latest sh

$ docker volume ls
DRIVER    VOLUME NAME
local     5b332abd25b77c1ac324a0e3c00dc9a554cfe80c996a20bd77ef10c35c8ef98a
local     05c903f47f3f3666e03ee06154ff54b23547a5cc65750ca18bb40be40ed4049c
local     6f595aada6ae7c9fb16831996c2bdd8d652bec55a7cedf96afef95aec8f4e6e1
local     7f54c9dbbec46acc5a843499c65a50e23a78baa884facd026704d0dcb0362c9e
local     47a791197d6164757b015df1e2aba48bac3999720ead6b5981820a3aaece4113
local     214155fe63200cc859c1eddd2b31aa990fd6eb7c8614aa02bd8b57690b0fe53e

当然,您可以随时检查卷以尝试找出它们的来源,但这可能对您有用,也可能没用:

docker inspect 5b332abd25b77c1ac324a0e3c00dc9a554cfe80c996a20bd77ef10c35c8ef98a

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 2022-01-06
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多