Bagaimana Anda mendaftar volume dalam wadah buruh pelabuhan?

213

Saat menggunakan gambar buruh pelabuhan dari pendaftar, saya sering perlu melihat volume yang dibuat oleh wadah gambar.

Catatan: Saya menggunakan buruh pelabuhan versi 1.3.2 di Red Hat 7.

Contoh

Gambar postgresresmi dari Docker Registry memiliki volume yang dikonfigurasi untuk kontainer di /var/lib/postgresql/data.

Apa perintah yang paling ringkas untuk menunjukkan volume /var/lib/postgresql/datadalam sebuah postgreswadah?

CivFan
sumber
5
Catatan: yang tampaknya telah berubah dengan buruh pelabuhan 1.8.1: lihat jawaban saya di bawah ini
VonC

Jawaban:

323

Gunakan docker psuntuk mendapatkan id kontainer.

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

Contoh:

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]

Hasil

map[/tmp:/tmp] 

rupanya karena penggunaan bahasa Go untuk mengimplementasikan alat perintah buruh pelabuhan.

The docker inspectperintah tanpa -f formatcukup verbose. Karena JSON, Anda dapat menyalurkannya ke python atau nodejs dan mengekstrak apa pun yang Anda butuhkan.

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>akan menampilkan layer yang dipanggang menjadi gambar. Sayangnya, docker historysepertinya terpincang-pincang oleh pemformatannya dan kurangnya pilihan untuk memilih apa yang ditampilkan.

Anda dapat memilih format singkat dan verbose, melalui 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

Berikut ini contoh verbose.

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
Paul
sumber
@CivFan Anda juga dapat mengajukan pertanyaan lain tentang string format Go untuk mendapatkan output ke format string yang dapat Anda gunakan .... itu akan menjadi pertanyaan Go, bukan pertanyaan buruh pelabuhan.
Paul
Untuk fleksibilitas, biasanya tidak ada volume yang disertakan, tetapi sebagai gantinya opsi -v untuk menjalankan docker digunakan untuk melampirkan saat runtime. Saya sepertinya mengingat opsi buruh pelabuhan tetapi tidak pernah melihat yang digunakan. Sarankan mengajukan pertanyaan baru tentang semua ini sebagai di luar ruang lingkup yang saat ini. Mungkin orang lain dapat membantu, pada pertanyaan baru akan paling efektif untuk menarik jawaban baru.
Paul
1
Saya menyisihkan pertanyaan ini menjadi sekadar wadah, dan mengajukan pertanyaan baru untuk gambar .
CivFan
8
Bukan Volume lagi tapi Mounts.
SIGIS
Situs web ini juga memiliki penjelasan yang cukup bagus: forums.docker.com/t/host-path-of-volume/12277/10
curveorzos
105

Dengan docker 1.10, Anda sekarang memiliki perintah baru untuk kontainer volume data.
(untuk kontainer reguler, lihat bagian selanjutnya, untuk buruh pelabuhan 1.8+):


Dengan buruh pelabuhan 1.8.1 (Agustus 2015), a docker inspect -f '{{ .Volumes }}' containeridakan kosong!

Anda sekarang perlu memeriksa Mounts, yang merupakan daftar jalur yang dipasang seperti:

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

Jika Anda ingin jalur mount pertama (misalnya), itu akan menjadi (menggunakan indeks 0):

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

Seperti komentar Mike Mitterer di bawah ini :

Cukup cetak semuanya:

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

Atau, seperti yang dikomentari oleh Mitja , gunakan jqperintah .

docker inspect -f '{{ json .Mounts }}' containerid | jq 
VONC
sumber
4
Cukup cetak semuanya: buruh pelabuhan periksa -f '{{json .Mounts}}' containerid | python -m json.tool
Mike Mitterer
1
@MikeMitterer Terima kasih. Saya telah memasukkan komentar Anda dalam jawaban untuk lebih banyak visibilitas.
VonC
2
Jika Anda ingin cukup-cetak dengan warna-warna cantik, Anda dapat menginstal jqpaket di bawah ubuntu, dan kemudian pipa ke sana:docker inspect -f '{{ json .Mounts }}' containerid | jq
Mitja
1
@Mitja Terima kasih. Saya telah memasukkan komentar Anda dalam jawaban untuk lebih banyak visibilitas.
VonC
@AlbertValdez Senang bisa membantu.
VonC
21

Tampilkan nama dan tujuan titik volume volume yang digunakan oleh wadah:

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

Ini kompatibel dengan Docker 1.13.

Jens Piegsa
sumber
10

Saya benar-benar googled ini, dan menemukan jawaban saya sendiri :) Ingatan saya hari ini ... Dan bagi mereka yang tidak tahu tentang hal itu commandlinefu adalah tempat yang bagus untuk menemukan dan mempublikasikan potongan-potongan ini.

Daftar volume buruh pelabuhan dengan wadah.

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

Contoh 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
pengusir
sumber
1
Yang ini melakukan apa yang saya butuhkan.
Andres Leon Rangel
8

Anda bisa mendapatkan informasi tentang volume mana yang secara khusus dimasukkan ke dalam wadah dengan memeriksa wadah dan melihat output JSON dan membandingkan beberapa bidang. Ketika Anda menjalankan docker inspect myContainer, bidang Volumesdan VolumesRWmemberi Anda informasi tentang SEMUA volume yang dipasang di dalam wadah, termasuk volume yang dipasang di Dockerfile dengan VOLUMEdirektif, dan pada baris perintah dengan docker run -vperintah. Namun, Anda dapat mengisolasi volume mana yang dipasang di wadah menggunakan docker run -vperintah dengan memeriksa HostConfig.Bindsbidang di docker inspectoutput JSON. Untuk memperjelas, opsi ini . Jadi, jika Anda rujuk silang bidang ini denganHostConfig.Binds bidang memberi tahu Anda volume mana yang dipasang secara khusus dalam docker runperintah Anda dengan-vVolumes bidang, Anda akan dapat menentukan volume yang dipanggang ke dalam wadah menggunakan VOLUME arahan di Dockerfile.

Grep dapat mencapai ini seperti:

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

Dan...

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

Dan dalam contoh saya, Anda dapat melihat saya telah memasang /var/docker/docker-registry/configke wadah /registrymenggunakan -vopsi dalam docker runperintah saya , dan saya telah memasang /datadan /configvolume menggunakan VOLUMEarahan di Dockerfile saya. Wadah tidak perlu berjalan untuk mendapatkan informasi ini, tetapi wadah tersebut harus dijalankan setidaknya satu kali untuk mengisi HostConfigoutput JSON dari docker inspectperintah Anda .

L0j1k
sumber
1
Apa itu HostConfig.Bindsdan bagaimana perbedaannya dari yang .Volumesterlihat dalam jawaban dari @Paul?
CivFan
1
Saya baru saja menghabiskan satu jam terakhir mencari melalui dokumen API jarak jauh dan sumber untuk menemukan perbedaannya, dan dari apa yang dapat saya katakan, .Volumesdaftar "pemetaan objek jalur titik mount (string) di dalam wadah ke objek kosong", dan HostConfig.Bindsmenjelaskan ikatan aktual Volume -mounted dalam wadah. Bagi saya, itulah yang HostConfig.Bindsingin Anda baca, lawan .Volumes, meskipun saya ingin mendengar alasan yang lebih baik.
L0j1k
1
Saya telah bertanya di #dockerFreenode (saluran utama untuk buruh pelabuhan), dan jika saya mendengar sesuatu kembali, saya pasti akan memperbarui di sini dengan informasi lebih lanjut. Ini pertanyaan yang sangat bagus yang pernah Anda tanyakan di sini tentang perbedaannya. Terima kasih!
L0j1k
1
@CivFan saya agak salah. Untuk melihat volume mana yang telah dimasukkan ke dalam gambar, Anda perlu menggunakan KEDUA bidang Volume dan HostConfig. Mengikat di output JSON dari inspeksi buruh pelabuhan. Saya telah mengoreksi diri saya dalam jawaban ini, yang sekarang kurang lebih menjawab pertanyaan Anda dengan benar dibandingkan dengan yang saya miliki sebelumnya. Semoga berhasil! :)
L0j1k
2
Pernahkah Anda memperhatikan HostConfig.Bindshanya diisi ketika jalur host volume ditentukan? Misalnya, docker run -d -v /docker-test:/docker-test postgresvs docker run -d -v /docker-test postgres. Tampaknya buruh pelabuhan menangani dua volume kasus ini sangat berbeda karena beberapa alasan.
CivFan
8

Untuk Docker 1.8, saya menggunakan:

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

jika Anda ingin mencantumkan semua nama wadah dengan volume yang relevan yang dilampirkan pada setiap wadah Anda dapat mencoba ini:

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

contoh output:

/ opt_rundeck_1 [/ opt / var / lib / mysql: / var / lib / mysql: rw / var / lund / rundeck / var / penyimpanan: / var / lib / rundeck / var / penyimpanan: 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 - nama wadah

[..] - volume terlampir pada conatiner

dsaydon
sumber
1
Meskipun ini secara teknis adalah jawaban untuk pertanyaan, itu tidak memiliki penjelasan. Harap edit komentar Anda sehingga Anda menjelaskan apa yang dilakukan parameter dan mengapa penanya ingin menggunakannya untuk menyelesaikan masalah yang diajukan dalam pertanyaannya.
shawty
6

Berikut ini adalah satu perintah baris untuk mendapatkan informasi volume untuk menjalankan kontainer:

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

Output adalah:

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

Versi buruh pelabuhan:

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
sumber
3

Variasi yang berguna untuk pengguna yang menyusun buruh pelabuhan:

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

Ini akan dengan sangat rapi menampilkan informasi volume yang dapat diuraikan. Contoh dari komposer wordpress docker saya:

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 

Output berisi satu baris untuk setiap kontainer, daftar volume (dan poin pemasangan) yang digunakan. Alter yang {{NAMA}}: {{}} .Destination untuk menampilkan informasi yang Anda inginkan.

Jika Anda hanya ingin daftar volume yang sederhana, satu volume per baris

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

Bagus untuk menghasilkan daftar volume untuk dicadangkan. Saya menggunakan teknik ini bersama dengan Blacklabelops Volumerize untuk mencadangkan semua volume yang digunakan oleh semua wadah dalam komposisi buruh pelabuhan. Dokumen untuk Volumerize tidak menyebutkannya, tetapi Anda tidak perlu menggunakannya dalam wadah yang persisten atau menggunakan fasilitas bawaan untuk memulai dan menghentikan layanan. Saya lebih suka meninggalkan operasi penting seperti cadangan dan kontrol layanan kepada pengguna yang sebenarnya (di luar buruh pelabuhan). Cadangan saya dipicu oleh akun pengguna (non-buruh pelabuhan) yang sebenarnya, dan menggunakan stop-compose docker untuk menghentikan layanan, mencadangkan semua volume yang digunakan, dan akhirnya pembuat docker mulai memulai kembali.

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

Ini adalah versi saya untuk menemukan titik mount dari komposisi buruh pelabuhan. Dalam menggunakannya untuk membuat cadangan volume.

 # 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

Ini adalah kombinasi dari solusi sebelumnya.

Plup
sumber
0

Jika Anda menggunakan pwsh (powershell core), Anda dapat mencoba

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

Anda juga dapat melihat nama kontainer dan Mounts seperti di bawah ini

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

Karena output dikonversi sebagai json, Anda bisa mendapatkan properti apa pun yang dimilikinya.

Samselvaprabu
sumber
0

Kita dapat melakukannya tanpa sintaks templat -f Go:

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

Operasi jq pertama mengupas pembungkus jq .[]objek {}.

Operasi jq kedua akan mengembalikan semua item Mount.

l3x
sumber