当使用来自注册中心的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兼容。

其他回答

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

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

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

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

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

这是我的版本,找到一个码头撰写挂载点。 在使用此备份卷时。

 # for Id in $(docker-compose -f ~/ida/ida.yml ps -q); do docker inspect -f '{{ (index .Mounts 0).Source }}' $Id; done
/data/volumes/ida_odoo-db-data/_data
/data/volumes/ida_odoo-web-data/_data

这是以前解决方案的组合。

使用Type:Source:Destination格式打印挂载:

docker container inspect \
    -f '{{range .Mounts}}{{.Type}}:{{.Source}}:{{.Destination}}{{println}}{{ end }}' \
    <containerId>

只打印Type="volume"的mount的Source:

docker container inspect \
    -f '{{range .Mounts}}{{ if eq .Type "volume" }}{{println .Source }}{{ end }}{{end}}' \
    <containerId>

我在谷歌上搜了一下,找到了我自己的答案:)我最近的记忆力……对于那些不了解它的人来说,commandlinefu是一个找到并发布这些代码片段的好地方。

按容器列出docker卷。

docker ps -a --format '{{ .ID }}' | xargs -I {} docker inspect -f '{{ .Name }}{{ printf "\n" }}{{ range .Mounts }}{{ printf "\n\t" }}{{ .Type }} {{ if eq .Type "bind" }}{{ .Source }}{{ end }}{{ .Name }} => {{ .Destination }}{{ end }}{{ printf "\n" }}' {}

示例输出。

root@jac007-truserv-jhb1-001 ~/gitlab $ docker ps -a --format '{{ .ID }}' | xargs -I {} docker inspect -f '{{ .Name }}{{ printf "\n" }}{{ range .Mounts }}{{ printf "\n\t" }}{{ .Type }} {{ if eq .Type "bind" }}{{ .Source }}{{ end }}{{ .Name }} => {{ .Destination }}{{ end }}{{ printf "\n" }}' {}
/gitlab_server_1

    volume gitlab-data => /var/opt/gitlab
    volume gitlab-config => /etc/gitlab
    volume gitlab-logs => /var/log/gitlab

/gitlab_runner_1

    bind /var/run/docker.sock => /var/run/docker.sock
    volume gitlab-runner-config => /etc/gitlab-runner
    volume 35b5ea874432f55a26c769e1cdb1ee3f06f78759e6f302e3c4b4aa40f3a495aa => /home/gitlab-runner

如果你想列出所有的容器名称和每个容器的相关卷,你可以尝试这样做:

docker ps -q | xargs docker container inspect -f '{{ .Name }} {{ .HostConfig.Binds }}'

示例输出:

/ opt_rundeck_1 [/ opt / var /李勃/ mysql: / var /李勃/ mysql: rw / var /李勃/ rundeck / var /储存:/ var /李勃/ rundeck / var /储存:rw / opt / var / rundeck / .ssh: / var /李勃/ rundeck / .ssh: rw / etc / / opt / etc / rundeck: rundeck: rw / var / log / rundeck: / var / log / rundeck: rw / opt / rundeck-plugins: / opt / rundeck-plugins: rw / opt / var / rundeck: / var / rundeck: rw]

/ opt_r十一k_1 -容器名称

(. .-附在容器上的卷