Como você lista volumes em contêineres de docker?

212

Ao usar imagens do Docker de registros, geralmente preciso ver os volumes criados pelos contêineres da imagem.

Nota: Estou usando o docker versão 1.3.2 no Red Hat 7.

Exemplo

A postgresimagem oficial do Docker Registry tem um volume configurado para contêineres em /var/lib/postgresql/data.

Qual é o comando mais sucinto para mostrar o volume /var/lib/postgresql/dataem um postgrescontêiner?

CivFan
fonte
5
Nota: isso parece ter mudado com o docker 1.8.1: veja minha resposta abaixo
VonC 13/08/2015

Respostas:

322

Use docker pspara obter o ID do contêiner.

Então docker inspect -f '{{ .Mounts }}' containerid

Exemplo:

terminal 1

$ docker run -it -v /tmp:/tmp ubuntu:14.04 /bin/bash

terminal 2

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
ddb7b55902cc        ubuntu:14.04        "/bin/bash"         About a minute ago   Up About a minute                       distracted_banach   

$ docker inspect -f "{{ .Mounts }}" ddb7
map[/tmp:/tmp]

A saída

map[/tmp:/tmp] 

é, aparentemente, devido ao uso da linguagem Go para implementar as ferramentas de comando do docker.

O docker inspectcomando sem o -f formaté bastante detalhado. Como é JSON, você pode canalizar para python ou nodejs e extrair o que precisar.

paul@home:~$ docker inspect ddb7
[{
    "AppArmorProfile": "",
    "Args": [],
    "Config": {
        "AttachStderr": true,
        "AttachStdin": true,
        "AttachStdout": true,
        "Cmd": [
            "/bin/bash"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "ExposedPorts": null,
        "Hostname": "ddb7b55902cc",
        "Image": "ubuntu:14.04",
        "MacAddress": "",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": null,
        "OpenStdin": true,
        "PortSpecs": null,
        "StdinOnce": true,
        "Tty": true,
        "User": "",
        "Volumes": null,
        "WorkingDir": ""
    },
    "Created": "2015-05-08T22:41:44.74862921Z",
    "Driver": "devicemapper",
    "ExecDriver": "native-0.2",
    "ExecIDs": null,
    "HostConfig": {
        "Binds": [
            "/tmp:/tmp"
        ],
        "CapAdd": null,
        "CapDrop": null,
        "ContainerIDFile": "",
        "Devices": [],
        "Dns": null,
        "DnsSearch": null,
        "ExtraHosts": null,
        "IpcMode": "",
        "Links": null,
        "LxcConf": [],
        "NetworkMode": "bridge",
        "PidMode": "",
        "PortBindings": {},
        "Privileged": false,
        "PublishAllPorts": false,
        "ReadonlyRootfs": false,
        "RestartPolicy": {
            "MaximumRetryCount": 0,
            "Name": ""
        },
        "SecurityOpt": null,
        "VolumesFrom": null
    },
    "HostnamePath": "/var/lib/docker/containers/ddb7b55902cc328612d794570fe9a936d96a9644411e89c4ea116a5fef4c311a/hostname",
    "HostsPath": "/var/lib/docker/containers/ddb7b55902cc328612d794570fe9a936d96a9644411e89c4ea116a5fef4c311a/hosts",
    "Id": "ddb7b55902cc328612d794570fe9a936d96a9644411e89c4ea116a5fef4c311a",
    "Image": "ed5a78b7b42bde1e3e4c2996e02da778882dca78f8919cbd0deb6694803edec3",
    "MountLabel": "",
    "Name": "/distracted_banach",
    "NetworkSettings": {
        "Bridge": "docker0",
        "Gateway": "172.17.42.1",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "172.17.0.4",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "LinkLocalIPv6Address": "fe80::42:acff:fe11:4",
        "LinkLocalIPv6PrefixLen": 64,
        "MacAddress": "02:42:ac:11:00:04",
        "PortMapping": null,
        "Ports": {}
    },
    "Path": "/bin/bash",
    "ProcessLabel": "",
    "ResolvConfPath": "/var/lib/docker/containers/ddb7b55902cc328612d794570fe9a936d96a9644411e89c4ea116a5fef4c311a/resolv.conf",
    "RestartCount": 0,
    "State": {
        "Error": "",
        "ExitCode": 0,
        "FinishedAt": "0001-01-01T00:00:00Z",
        "OOMKilled": false,
        "Paused": false,
        "Pid": 6115,
        "Restarting": false,
        "Running": true,
        "StartedAt": "2015-05-08T22:41:45.367432585Z"
    },
    "Volumes": {
        "/tmp": "/tmp"
    },
    "VolumesRW": {
        "/tmp": true
    }
}
]

docker history <image name>mostrará as camadas criadas em uma imagem. Infelizmente, docker historyparece prejudicado por sua formatação e falta de opções para escolher o que é exibido.

Você pode escolher os formatos resumido e detalhado, por meio do sinalizador --no-trunc.

$ docker history drpaulbrewer/spark-worker
IMAGE               CREATED             CREATED BY                                      SIZE
438ff4e1753a        2 weeks ago         /bin/sh -c #(nop) CMD [/bin/sh -c /spark/my-s   0 B
6b664e299724        2 weeks ago         /bin/sh -c #(nop) ADD file:09da603c5f0dca7cc6   296 B
f6ae126ae124        2 weeks ago         /bin/sh -c #(nop) MAINTAINER drpaulbrewer@eaf   0 B
70bcb3ffaec9        2 weeks ago         /bin/sh -c #(nop) EXPOSE 2222/tcp 4040/tcp 60   0 B
1332ac203849        2 weeks ago         /bin/sh -c apt-get update && apt-get --yes up   1.481 GB
8e6f1e0bb1b0        2 weeks ago         /bin/sh -c sed -e 's/archive.ubuntu.com/www.g   1.975 kB
b3d242776b1f        2 weeks ago         /bin/sh -c #(nop) WORKDIR /spark/spark-1.3.1    0 B
ac0d6cc5aa3f        2 weeks ago         /bin/sh -c #(nop) ADD file:b6549e3d28e2d149c0   25.89 MB
6ee404a44b3f        5 weeks ago         /bin/sh -c #(nop) WORKDIR /spark                0 B
c167faff18cf        5 weeks ago         /bin/sh -c adduser --disabled-password --home   335.1 kB
f55d468318a4        5 weeks ago         /bin/sh -c #(nop) MAINTAINER drpaulbrewer@eaf   0 B
19c8c047d0fe        8 weeks ago         /bin/sh -c #(nop) CMD [/bin/bash]               0 B
c44d976a473f        8 weeks ago         /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/   1.879 kB
14dbf1d35e28        8 weeks ago         /bin/sh -c echo '#!/bin/sh' > /usr/sbin/polic   701 B
afa7a164a0d2        8 weeks ago         /bin/sh -c #(nop) ADD file:57f97478006b988c0c   131.5 MB
511136ea3c5a        23 months ago                                                       0 B

Aqui está um exemplo detalhado.

docker history --no-trunc=true drpaulbrewer/spark-worker
IMAGE                                                              CREATED             CREATED BY                                                                                                                                                                                                                                                                                                                                                                                                                        SIZE
438ff4e1753a60779f389a3de593d41f7d24a61da6e1df76dded74a688febd64   2 weeks ago         /bin/sh -c #(nop) CMD [/bin/sh -c /spark/my-spark-worker.sh]                                                                                                                                                                                                                                                                                                                                                                      0 B
6b664e29972481b8d6d47f98167f110609d9599f48001c3ca11c22364196c98a   2 weeks ago         /bin/sh -c #(nop) ADD file:09da603c5f0dca7cc60f1911caf30c3c70df5e4783f7eb10468e70df66e2109f in /spark/                                                                                                                                                                                                                                                                                                                            296 B
f6ae126ae124ca211c04a1257510930b37ea78425e31a273ea0b1495fa176c57   2 weeks ago         /bin/sh -c #(nop) MAINTAINER [email protected]                                                                                                                                                                                                                                                                                                                                                                               0 B
70bcb3ffaec97a0d14e93b170ed70cc7d68c3c9dfb0222c1d360a300d6e05255   2 weeks ago         /bin/sh -c #(nop) EXPOSE 2222/tcp 4040/tcp 6066/tcp 7077/tcp 7777/tcp 8080/tcp 8081/tcp                                                                                                                                                                                                                                                                                                                                           0 B
1332ac20384947fe1f15107213b675e5be36a68d72f0e81153d6d5a21acf35af   2 weeks ago         /bin/sh -c apt-get update && apt-get --yes upgrade     && apt-get --yes install sed nano curl wget openjdk-8-jdk scala     && echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >>/etc/environment     && export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"     && ./build/mvn -Phive -Phive-thriftserver -DskipTests clean package     && chown -R spark:spark /spark     && mkdir /var/run/sshd   1.481 GB
8e6f1e0bb1b0b9286947d3a4b443cc8099b00f9670aab1d58654051e06f62e51   2 weeks ago         /bin/sh -c sed -e 's/archive.ubuntu.com/www.gtlib.gatech.edu\/pub/' /etc/apt/sources.list > /tmp/sources.list && mv /tmp/sources.list /etc/apt/sources.list                                                                                                                                                                                                                                                                       1.975 kB
b3d242776b1f1f1ae5685471d06a91a68f92845ef6fc6445d831835cd55e5d0b   2 weeks ago         /bin/sh -c #(nop) WORKDIR /spark/spark-1.3.1                                                                                                                                                                                                                                                                                                                                                                                      0 B
ac0d6cc5aa3fdc3b65fc0173f6775af283c3c395c8dae945cf23940435f2785d   2 weeks ago         /bin/sh -c #(nop) ADD file:b6549e3d28e2d149c0bc84f69eb0beab16f62780fc4889bcc64cfc9ce9f762d6 in /spark/                                                                                                                                                                                                                                                                                                                            25.89 MB
6ee404a44b3fdd3ef3318dc10f3d002f1995eea238c78f4eeb9733d00bb29404   5 weeks ago         /bin/sh -c #(nop) WORKDIR /spark                                                                                                                                                                                                                                                                                                                                                                                                  0 B
c167faff18cfecedef30343ef1cb54aca45f4ef0478a3f6296746683f69d601b   5 weeks ago         /bin/sh -c adduser --disabled-password --home /spark spark                                                                                                                                                                                                                                                                                                                                                                        335.1 kB
f55d468318a4778733160d377c5d350dc8f593683009699c2af85244471b15a3   5 weeks ago         /bin/sh -c #(nop) MAINTAINER [email protected]                                                                                                                                                                                                                                                                                                                                                                               0 B
19c8c047d0fe2de7239120f2b5c1a20bbbcb4d3eb9cbf0efa59ab27ab047377a   8 weeks ago         /bin/sh -c #(nop) CMD [/bin/bash]                                                                                                                                                                                                                                                                                                                                                                                                 0 B
c44d976a473f143937ef91449c73f2cabd109b540f6edf54facb9bc2b4fff136   8 weeks ago         /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list                                                                                                                                                                                                                                                                                                                                                          1.879 kB
14dbf1d35e2849a00c6c2628055030fa84b4fb55eaadbe0ecad8b82df65cc0db   8 weeks ago         /bin/sh -c echo '#!/bin/sh' > /usr/sbin/policy-rc.d                                                                                                                                                                                                                                                                                                                                                                               && echo 'exit 101' >> /usr/sbin/policy-rc.d    && chmod +x /usr/sbin/policy-rc.d                        && dpkg-divert --local --rename --add /sbin/initctl    && cp -a /usr/sbin/policy-rc.d /sbin/initctl    && sed -i 's/^exit.*/exit 0/' /sbin/initctl                        && echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup                        && echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean    && echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean    && echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean                        && echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages                        && echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes   701 B
afa7a164a0d215dbf45cd1aadad2a4d12b8e33fc890064568cc2ea6d42ef9b3c   8 weeks ago         /bin/sh -c #(nop) ADD file:57f97478006b988c0c68e5bf82684372e427fd45f21cd7baf5d974d2cfb29e65 in /                                                                                                                                                                                                                                                                                                                                  131.5 MB
511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158   23 months ago                                                                                                                                                                                                                                                                                                                                                                                                                                         0 B
Paulo
fonte
@CivFan Você também pode fazer outra pergunta sobre as seqüências de caracteres do formato Go para obter a saída em um formato de sequência que você possa usar .... isso seria uma pergunta do Go, não uma pergunta do docker.
Paul
Para flexibilidade, geralmente não há volumes incluídos, mas a opção -v para docker run é usada para conectar no tempo de execução. Parece que me lembro de uma opção dockerfile, mas nunca a vi usada. Recomende fazer uma nova pergunta sobre qualquer coisa além do escopo da atual. Talvez alguém possa ajudar, em uma nova pergunta será mais eficaz para atrair novas respostas.
Paul
1
Escolhi essa pergunta apenas para contêineres e fiz uma nova pergunta para imagens .
precisa saber é o seguinte
8
Já não é Volumes, mas Montagens.
SIGIS
Este site também tem uma explicação muito boa: forums.docker.com/t/host-path-of-volume/12277/10
curveorzos
105

Com a janela de encaixe 1.10, agora você tem novos comandos para contêineres de volume de dados.
(para contêineres regulares, consulte a próxima seção, para o docker 1.8+):


Com o docker 1.8.1 (agosto de 2015), um docker inspect -f '{{ .Volumes }}' containeridestaria vazio!

Agora você precisa verificar Mounts, que é uma lista de caminhos montados, como:

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

Se você deseja o caminho da primeira montagem (por exemplo), seria (usando o índice 0):

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

Como Mike Mitterer comenta abaixo :

Bonita imprimir a coisa toda:

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

Ou, como comentado por Mitja , use o jqcomando .

docker inspect -f '{{ json .Mounts }}' containerid | jq 
VonC
fonte
4
Imprima a coisa toda: docker inspeciona -f '{{json .Mounts}}' containerid | python -m json.tool
Mike Mitterer
1
@MikeMitterer Obrigado. Incluímos seu comentário na resposta para obter mais visibilidade.
VonC 11/07/16
2
Se você quiser imprimir com cores bonitas, poderá instalar o jqpacote no ubuntu e depois canalizá-lo:docker inspect -f '{{ json .Mounts }}' containerid | jq
Mitja 10/17 /
1
@Mitja Obrigado. Incluímos seu comentário na resposta para obter mais visibilidade.
VonC
@AlbertValdez Fico feliz em ajudar.
VonC 23/04/19
21

Mostrar nomes e destinos do ponto de montagem dos volumes usados ​​por um contêiner:

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

Isso é compatível com o Docker 1.13.

Jens Piegsa
fonte
9

Na verdade, pesquisei isso no Google e encontrei minha própria resposta :) Minha memória hoje em dia ... E para aqueles que não sabem sobre isso commandlinefu é um bom lugar para encontrar e publicar esses trechos.

Listar volumes da janela de encaixe por contêiner.

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" }}' {}

Exemplo de saída.

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
expelledboy
fonte
1
Este faz o que eu preciso.
Andres Leon Rangel
8

Você pode obter informações sobre quais volumes foram especificamente projetados no contêiner, inspecionando o contêiner e procurando na saída JSON e comparando alguns dos campos. Quando você executa docker inspect myContainer, os campos Volumese VolumesRWfornecem informações sobre TODOS os volumes montados dentro de um contêiner, incluindo volumes montados no Dockerfile com a VOLUMEdiretiva e na linha de comando com o docker run -vcomando. No entanto, você pode isolar quais volumes foram montados no contêiner usando o docker run -vcomando verificando o HostConfig.Bindscampo na docker inspectsaída JSON. Para esclarecer, esse HostConfig.Bindscampo informa quais volumes foram montados especificamente em seu docker runcomando com o-vopção. Portanto, se você fizer uma referência cruzada desse campo com o Volumescampo, poderá determinar quais volumes foram inseridos no contêiner usando VOLUMEdiretivas no Dockerfile.

Um grep poderia fazer isso como:

$ docker inspect myContainer | grep -C2 Binds
...
"HostConfig": {
    "Binds": [
        "/var/docker/docker-registry/config:/registry"
    ],

E...

$ docker inspect myContainer | grep -C3 -e "Volumes\":"
...
"Volumes": {
    "/data": "/var/lib/docker...",
    "/config": "/var/lib/docker...",
    "/registry": "/var/docker/docker-registry/config"

E no meu exemplo, você pode ver que eu montei /var/docker/docker-registry/configno contêiner /registryusando a -vopção no meu docker runcomando e montei os volumes /datae /configusando a VOLUMEdiretiva no meu Dockerfile. O contêiner não precisa estar em execução para obter essas informações, mas precisa ter sido executado pelo menos uma vez para preencher a HostConfigsaída JSON do seu docker inspectcomando.

L0j1k
fonte
1
O que é HostConfig.Bindse como é diferente do .Volumesvisto na resposta do @Paul?
CivFan
1
Acabei de passar a última hora examinando os documentos da API remota e a fonte para descobrir a diferença e, pelo que posso dizer, .Volumeslista "caminhos de ponto de montagem (cadeias) de mapeamento de objetos dentro do contêiner para objetos vazios" e HostConfig.Bindsdescreve a ligação real volumes montados no contêiner. Parece-me então que HostConfig.Bindsé isso que você quer ler .Volumes, apesar de eu gostar de ouvir um raciocínio melhor.
L0j1k
1
Eu perguntei no #dockerFreenode (o canal principal do docker) e, se ouvir algo de volta, definitivamente atualizarei aqui com mais informações. É uma pergunta muito boa que você fez aqui sobre a diferença. Obrigado!
L0j1k
1
@CivFan Eu estava meio errado. Para ver quais volumes foram inseridos na imagem, é necessário usar os campos Volumes e HostConfig.Binds na saída JSON do docker inspecionar. Corrigi-me nesta resposta, que agora responde mais ou menos corretamente a sua pergunta em relação ao que eu tinha antes. Boa sorte! :)
L0j1k
2
Você percebeu que HostConfig.Bindssó é preenchido quando o caminho do host do volume é especificado? Por exemplo, docker run -d -v /docker-test:/docker-test postgresvs docker run -d -v /docker-test postgres. Parece que o docker lida com esses dois casos de volume de maneira bastante diferente por algum motivo.
CivFan 14/05
8

Para o Docker 1.8, eu uso:

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

se você quiser listar todos os nomes de contêineres com os volumes relevantes anexados a cada contêiner, tente:

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

saída de exemplo:

/ opt_rundeck_1 [/ opt / var / lib / mysql: / var / lib / mysql: rw / var / lib / rundeck / var / armazenamento: / var / lib / rundeck / var / armazenamento: rw / opt / var / rundeck / .ssh: /var/lib/rundeck/.ssh: rw / opt / etc / rundeck: / etc / rundeck: rw / var / log / rundeck: / var / log / rundeck: rw / opt / rundeck-plugins: / opt / rundeck-plugins: rw / opt / var / rundeck: / var / rundeck: rw]

/ opt_rundeck_1 - nome do contêiner

[..] - volumes anexados ao conatiner

dsaydon
fonte
1
Embora isso seja tecnicamente uma resposta para a pergunta, falta explicação. Por favor, edite seu comentário para explicar o que os parâmetros estão fazendo e por que o solicitante da pergunta gostaria de usá-los para resolver o problema colocado em sua pergunta.
quer
6

Aqui está um comando de linha para obter as informações de volume para a execução de contêineres:

for contId in `docker ps -q`; do echo "Container Name: "   `docker ps -f "id=$contId" | awk '{print $NF}' | grep -v NAMES`; echo "Container Volume: " `docker inspect -f '{{.Config.Volumes}}' $contId`; docker inspect -f '{{ json .Mounts }}' $contId  | jq '.[]';   printf "\n"; done

A saída é:

root@ubuntu:/var/lib# for contId in `docker ps -q`; do echo "Container Name: "   `docker ps -f "id=$contId" | awk '{print $NF}' | grep -v NAMES`; echo "Container Volume: " `docker inspect -f '{{.Config.Volumes}}' $contId`; docker inspect -f '{{ json .Mounts }}' $contId  | jq '.[]';   printf "\n"; done

Container Name:  freeradius
Container Volume:  map[]

Container Name:  postgresql
Container Volume:  map[/run/postgresql:{} /var/lib/postgresql:{}]
{
  "Propagation": "",
  "RW": true,
  "Mode": "",
  "Driver": "local",
  "Destination": "/run/postgresql",
  "Source":     "/var/lib/docker/volumes/83653a53315c693f0f31629f4680c56dfbf861c7ca7c5119e695f6f80ec29567/_data",
  "Name": "83653a53315c693f0f31629f4680c56dfbf861c7ca7c5119e695f6f80ec29567"
}
{
  "Propagation": "rprivate",
  "RW": true,
  "Mode": "",
  "Destination": "/var/lib/postgresql",
  "Source": "/srv/docker/postgresql"
}

Container Name:  rabbitmq
Container Volume:  map[]

Versão do Docker:

root@ubuntu:~# docker version
Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 21:44:32 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 21:44:32 2016
 OS/Arch:      linux/amd64
Yavuz Sert
fonte
3

Variação útil para usuários que compõem o docker:

docker-compose ps -q | xargs docker container inspect  \
   -f '{{ range .Mounts }}{{ .Name }}:{{ .Destination }} {{ end }}' 

Isso produzirá muito bem informações de volume analisáveis. Exemplo do meu wordpress docker-compose:

ubuntu@core $ docker-compose ps -q | xargs docker container inspect  -f '{{ range .Mounts }}{{ .Name }}:{{ .Destination }} {{ end }}' 
core_wpdb:/var/lib/mysql 
core_wpcode:/code core_wphtml:/var/www/html 

A saída contém uma linha para cada contêiner, listando os volumes (e pontos de montagem) usados. Altere a parte {{.Name}}: {{.Destination}} para exibir as informações que você deseja.

Se você deseja apenas uma lista simples de volumes, um por linha

$ docker-compose ps -q | xargs docker container inspect  \
   -f '{{ range .Mounts }}{{ .Name }} {{ end }}' \
   | xargs -n 1 echo
core_wpdb
core_wpcode
core_wphtml

Ótimo para gerar uma lista de volumes para backup. Eu uso essa técnica junto com o Blacklabelops Volumerize para fazer backup de todos os volumes usados ​​por todos os contêineres em uma janela de encaixe. Os documentos para Volumerize não o chamam, mas você não precisa usá-lo em um contêiner persistente ou usar os recursos internos para iniciar e interromper serviços. Prefiro deixar operações críticas, como backup e controle de serviço, para o usuário real (janela de encaixe externa). Meus backups são acionados pela conta de usuário real (sem docker) e usam o docker-compose stop para interromper os serviços, fazem backup de todos os volumes em uso e, finalmente, o docker-compose começa a reiniciar.

markgo2k
fonte
2
docker inspect -f '{{ json .Mounts }}' containerid | jq '.[]'
Camilo Silva
fonte
1

Aqui está minha versão para encontrar pontos de montagem de uma composição do docker. Use isso para fazer backup dos volumes.

 # 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

Esta é uma combinação de soluções anteriores.

Plup
fonte
0

Se você estiver usando o pwsh (núcleo do powershell), poderá tentar

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

você também pode ver o nome do contêiner e as montagens como abaixo

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

Como a saída é convertida como json, você pode obter todas as propriedades que ela possui.

Samselvaprabu
fonte
0

Podemos fazer isso sem a sintaxe do modelo -f Go:

docker inspect <CONTAINER_ID> | jq .[] | jq .Mounts[]

A primeira operação jq jq .[]retira o {}wrapper do objeto .

A segunda operação jq retornará todos os itens de montagem.

l3x
fonte