如何找到已装入特定卷的容器?

时间:2016-07-05 23:41:17

标签: docker

我是码头工人的新手,已经玩了几天。

我最近遇到了docker volumes,我无法弄清楚这一点......

$ docker volume ls
DRIVER              VOLUME NAME
local               97cdb9ee214fbb2a2da04c457613c637043afe8e302ac37c4be435241742e309
local               hello

我不知道哪个容器97cdb9ee...属于哪个容器。我知道如果没有传递名字,这是随机生成的。

为什么当您执行docker volumes ls并且没有显示docker run ... -v <host_dir> ...时,该卷只显示docker run ... -v <host_dir>:<container_dir> ...

除了简单的测试之外,是否有充分的理由拥有这么多匿名卷?

编辑: 它可以在容器端docker inspect <container>找到。但是,必须对所有容器做到这一点以确定哪个容器可能会很烦人。是否可以重命名卷名?

1 个答案:

答案 0 :(得分:0)

如您所见,您可以在检查容器时找到它:

$ docker run -v /tmp --name voltest busybox true
$ docker volume ls
DRIVER              VOLUME NAME
local               4faeb87e1d603d23157564cb94fa890ab21010c3c6c91c33bcae7d1ed016f560
$ docker inspect voltest
...

 "Mounts": [
     {
                "Name": "4faeb87e1d603d23157564cb94fa890ab21010c3c6c91c33bcae7d1ed016f560",
                "Source": "/var/lib/docker/volumes/4faeb87e1d603d23157564cb94fa890ab21010c3c6c91c33bcaed1ed016f560/_data",
                "Destination": "/tmp",

                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
     }
  ], 
...

您可以在容器上执行docker rm -v ...来清理这些内容。或者,您可以通过执行docker run -v myname:/path image_name来命名它们,以使用名为“myname”的命名卷。不自动删除它们的原因是图像作者将该位置标识为包含您可能不希望在其Dockerfile中使用VOLUME定义意外丢失的数据。但是,如果您已经删除了容器并且可以清除它们,那么它们通常没有任何价值。