当使用来自注册中心的docker映像时,我经常需要查看映像容器创建的卷。

注意:我在Red Hat 7上使用docker 1.3.2版本。

例子

Docker Registry的postgress官方镜像有一个为容器/var/lib/postgresql/data.配置的卷

在postgres容器中显示/var/lib/postgresql/data的卷最简洁的命令是什么?


当前回答

显示容器使用的卷的名称和挂载点目的地:

docker container inspect \
 -f '{{ range .Mounts }}{{ .Name }}:{{ .Destination }} {{ end }}' \
 CONTAINER_ID_OR_NAME

这与Docker 1.13兼容。

其他回答

对于Docker 1.8,我使用:

$ docker inspect -f "{{ .Config.Volumes }}" 957d2dd1d4e8
map[/xmount/dvol.01:{}]
$ 

在docker 1.10中,现在有了用于数据量容器的新命令。 (对于常规容器,请参见下一节,对于docker 1.8+):

Docker卷ls 码头容积检查


在docker 1.8.1(2015年8月)中,docker inspect -f '{{.Volumes}}' containerid将为空!

你现在需要检查Mounts,这是一个挂载路径列表,比如:

   "Mounts": [
       {
           "Name": "7ced22ebb63b78823f71cf33f9a7e1915abe4595fcd4f067084f7c4e8cc1afa2",
           "Source": "/mnt/sda1/var/lib/docker/volumes/7ced22ebb63b78823f71cf33f9a7e1915abe4595fcd4f067084f7c4e8cc1afa2/_data",
           "Destination": "/home/git/repositories",
           "Driver": "local",
           "Mode": "",
           "RW": true
       }
   ],

如果你想要第一个挂载的路径(例如),这将是(使用索引0):

docker inspect -f '{{ (index .Mounts 0).Source }}' containerid

Mike Mitterer在下面评论道:

漂亮的打印整件事:

 docker inspect -f '{{ json .Mounts }}' containerid | python -m json.tool 

或者,正如Mitja所评论的那样,使用jq命令。

docker inspect -f '{{ json .Mounts }}' containerid | jq 

打印所有容器及其Docker卷:

docker container inspect $(docker container ls -q) \
  -f '{{$container := .Name}}{{range .Mounts}}{{if eq .Type "volume"}}{{$container}} {{.Name}}{{"\n"}}{{end}}{{end}}' \
  | grep -v '^$'
docker inspect -f '{{ json .Mounts }}' containerid | jq '.[]'

如果您正在使用pwsh (powershell核心),可以尝试一下

(docker ps --format='{{json .}}' |  ConvertFrom-Json).Mounts

你也可以看到下面的容器名称和装载

docker ps --format='{{json .}}' |  ConvertFrom-Json | select Names,Mounts

当输出被转换为json时,您可以获得它所具有的任何属性。