Come si elencano i volumi nei contenitori docker?


213

Quando utilizzo le immagini docker dai registri, ho spesso bisogno di vedere i volumi creati dai contenitori dell'immagine.

Nota: sto usando la versione docker 1.3.2 su Red Hat 7.

Esempio

L' postgresimmagine ufficiale dal registro Docker ha un volume configurato per i contenitori in /var/lib/postgresql/data.

Qual è il comando più succinto per mostrare il volume /var/lib/postgresql/datain un postgrescontenitore?


5
Nota: questo sembra essere cambiato con la finestra mobile 1.8.1: vedere la mia risposta di seguito
VonC

Risposte:


323

Utilizzare docker psper ottenere l'ID contenitore.

Poi docker inspect -f '{{ .Mounts }}' containerid

Esempio:

Terminale 1

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

terminale 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]

Il risultato

map[/tmp:/tmp] 

è, apparentemente, dovuto all'uso della lingua Go per implementare gli strumenti di comando docker.

Il docker inspectcomando senza il -f formatè abbastanza dettagliato. Dal momento che è JSON, è possibile reindirizzarlo a Python o nodejs ed estrarre tutto ciò di cui hai bisogno.

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>mostrerà gli strati cotti in un'immagine. Sfortunatamente,docker history sembra ostacolato dalla sua formattazione e dalla mancanza di opzioni per scegliere ciò che viene visualizzato.

Puoi scegliere formati concisi e dettagliati, tramite il flag --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

Ecco un esempio dettagliato.

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 drpaulbrewer@eaftc.com                                                                                                                                                                                                                                                                                                                                                                               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 drpaulbrewer@eaftc.com                                                                                                                                                                                                                                                                                                                                                                               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

@CivFan Potresti anche porre un'altra domanda sulle stringhe di formato Go per ottenere l'output in un formato di stringa che puoi usare .... sarebbe una domanda Go e non una finestra mobile.
Paul,

Per flessibilità, di solito non sono inclusi volumi, ma invece l'opzione -v per l'esecuzione della finestra mobile viene utilizzata per collegarsi in fase di esecuzione. Mi sembra di ricordare un'opzione dockerfile ma non l'ho mai vista usata. Raccomanda di porre una nuova domanda in merito a qualsiasi cosa al di fuori dell'ambito di quella attuale. Forse qualcun altro può aiutare, a una nuova domanda sarà più efficace attrarre nuove risposte.
Paul,

1
Ho abbattuto questa domanda solo in contenitori e ho fatto una nuova domanda per le immagini .
CivFan,

8
Non è più Volumi ma Monti.
SIGIS,

Anche questo sito web ha una spiegazione abbastanza valida: forum.docker.com/t/host-path-of-volume/12277/10
curveorzos

105

Con la finestra mobile 1.10, ora hai nuovi comandi per i contenitori del volume di dati.
(per i contenitori normali, vedere la sezione successiva, per la finestra mobile 1.8+):


Con la finestra mobile 1.8.1 (agosto 2015), un docker inspect -f '{{ .Volumes }}' containeridsarebbe vuoto!

Ora devi controllare Mounts, che è un elenco di percorsi montati come:

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

Se si desidera il percorso del primo montaggio (ad esempio), sarebbe (utilizzando l'indice 0):

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

Come commenta Mike Mitterer di seguito :

Abbastanza stampa il tutto:

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

Oppure, come commentato da Mitja , utilizzare il jqcomando .

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

4
Stampa piuttosto il tutto: docker inspect -f '{{json .Mounts}}' containerid | python -m json.tool
Mike Mitterer,

1
@MikeMitterer Grazie. Ho incluso il tuo commento nella risposta per una maggiore visibilità.
VonC,

2
Se vuoi una bella stampa con bei colori, puoi installare il jqpacchetto sotto Ubuntu, e poi semplicemente pipe ad esso:docker inspect -f '{{ json .Mounts }}' containerid | jq
Mitja

1
@Mitja Grazie. Ho incluso il tuo commento nella risposta per una maggiore visibilità.
VonC,

@AlbertValdez Sono contento di essere d'aiuto.
VonC,

21

Mostra i nomi e le destinazioni dei mount point dei volumi utilizzati da un container:

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

Questo è compatibile con Docker 1.13.


10

In realtà ho cercato su Google questo, e ho trovato la mia risposta :) La mia memoria in questi giorni ... E per quelli che non ne sono a conoscenza commandlinefu è un bel posto per trovare e pubblicare questi frammenti di sorta.

Elenca i volumi della finestra mobile per contenitore.

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

Esempio di output.

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

1
Questo fa quello di cui ho bisogno.
Andres Leon Rangel,

8

È possibile ottenere informazioni su quali volumi sono stati specificamente cotti nel contenitore ispezionando il contenitore e osservando l'output JSON e confrontando un paio di campi. Quando corri docker inspect myContainer, ilVolumesVolumesRW campi e forniscono informazioni su TUTTI i volumi montati all'interno di un contenitore, inclusi i volumi montati sia nel Dockerfile con la VOLUMEdirettiva, sia nella riga di comando con il docker run -vcomando. Tuttavia, è possibile isolare quali volumi sono stati montati nel contenitore utilizzando il docker run -vcomando controllando il HostConfig.Bindscampo docker inspectnell'output JSON. Per chiarire, questo HostConfig.Bindscampo indica quali volumi sono stati montati specificamente nella tuadocker run comando con il-vopzione. Quindi, se si fa un riferimento incrociato di questo campo con ilVolumescampo, sarai in grado di determinare quali volumi sono stati cotti nel contenitore usando le VOLUMEdirettive nel Dockerfile.

Un grep potrebbe realizzare questo come:

$ 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 nel mio esempio, puoi vedere che ho montato /var/docker/docker-registry/confignel contenitore come /registryusando l' -vopzione nel mio docker runcomando e ho montato i volumi /datae /configusando la VOLUMEdirettiva nel mio Dockerfile. Non è necessario che il contenitore sia in esecuzione per ottenere queste informazioni, ma deve essere stato eseguito almeno una volta per popolare l' HostConfigoutput JSON del docker inspectcomando.


1
Che cos'è HostConfig.Bindse in che cosa differisce dalla .Volumesvista nella risposta di @Paul?
CivFan,

1
Ho appena trascorso l'ultima ora a cercare tra i documenti API remoti e l' origine per scoprire la differenza, e da quello che posso dire, .Volumeselenca "percorsi di mountpoint (stringhe) di mapping degli oggetti all'interno del contenitore per svuotare oggetti" e HostConfig.Bindsdescrive il bind effettivo volumi montati nel contenitore. Mi sembra che HostConfig.Bindssia quello che vuoi leggere, contro .Volumes, anche se mi piacerebbe sentire un ragionamento migliore.
L0j1k,

1
Ho chiesto #dockersu Freenode (il canale principale per la finestra mobile), e se sento qualcosa di nuovo, aggiornerò sicuramente qui con ulteriori informazioni. È un'ottima domanda che hai posto qui sulla differenza. Grazie!
L0j1k,

1
@CivFan Avevo sbagliato. Per vedere quali volumi sono stati inseriti nell'immagine, è necessario utilizzare ENTRAMBI i campi Volumi e HostConfig.Binds nell'output JSON di docker inspect. Mi sono corretto in questa risposta, che ora risponde più o meno correttamente alla tua domanda rispetto a ciò che avevo prima. In bocca al lupo! :)
L0j1k,

2
Hai notato che HostConfig.Bindsviene popolato solo quando viene specificato il percorso host del volume? Ad esempio, docker run -d -v /docker-test:/docker-test postgrescontro docker run -d -v /docker-test postgres. Sembra che la finestra mobile gestisca questi due casi di volume in modo diverso per qualche motivo.
CivFan,

8

Per Docker 1.8, utilizzo:

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

8

se si desidera elencare tutti i nomi dei contenitori con i volumi pertinenti collegati a ciascun contenitore, è possibile provare questo:

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

esempio di output:

/ opt_rundeck_1 [/ opt / var / lib / mysql: / var / lib / mysql: rw / var / lib / rundeck / var / storage: / var / lib / rundeck / var / storage: 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 del contenitore

[..] - volumi collegati al conatiner


1
Sebbene tecnicamente questa sia una risposta alla domanda, manca di spiegazione. Modifica il tuo commento in modo da spiegare cosa stanno facendo i parametri e perché chi pone la domanda vorrebbe usarli per risolvere il problema posto nella sua domanda.
shawty

6

Ecco un comando di riga per ottenere le informazioni sul volume per i container in esecuzione:

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

L'output è:

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[]

Versione 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

3

Variazione utile per gli utenti che compongono docker:

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

Ciò produrrà in modo molto preciso informazioni sul volume analizzabili. Esempio dal mio 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 

L'output contiene una riga per ciascun contenitore, che elenca i volumi (e i punti di montaggio) utilizzati. Modifica {{.Name}}: {{.Destination}} per visualizzare le informazioni che desideri.

Se vuoi solo un semplice elenco di volumi, uno per riga

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

Ottimo per generare un elenco di volumi per il backup. Uso questa tecnica insieme a Blacklabelops Volumerize per eseguire il backup di tutti i volumi utilizzati da tutti i contenitori all'interno di una finestra mobile-componi. I documenti per Volumerize non lo richiamano, ma non è necessario utilizzarli in un contenitore persistente o utilizzare le strutture integrate per l'avvio e l'arresto dei servizi. Preferisco lasciare operazioni critiche come il backup e il controllo del servizio all'utente reale (al di fuori della finestra mobile). I miei backup sono attivati ​​dall'account utente effettivo (non docker) e utilizzano l'arresto di composizione docker per arrestare i servizi, il backup di tutti i volumi in uso e infine l'avvio di composizione docker per il riavvio.



1

Ecco la mia versione per trovare i punti di montaggio di una finestra mobile comporre. In uso questo per eseguire il backup dei volumi.

 # 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

Questa è una combinazione di soluzioni precedenti.


0

Se stai usando pwsh (PowerShell Core), puoi provare

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

inoltre puoi vedere sia il nome del contenitore che i Montaggi come di seguito

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

Poiché l'output viene convertito in json, è possibile ottenere tutte le proprietà che ha.


0

Possiamo farlo senza la sintassi del modello -f Go:

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

La prima operazione jq jq .[]rimuove il {}wrapper oggetto .

La seconda operazione jq restituirà tutti gli elementi Mount.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.