Liman işçisi konteynırlarındaki hacimleri nasıl listeliyorsunuz?


213

Kayıtlardaki docker görüntülerini kullanırken, genellikle görüntünün kapsayıcıları tarafından oluşturulan hacimleri görmem gerekir.

Not: Red Hat 7'de docker sürüm 1.3.2 kullanıyorum.

Misal

postgresDocker Sicil resmi resim konteynerler için konfigüre edilmiş olan bir hacme sahiptir /var/lib/postgresql/data.

/var/lib/postgresql/dataBir postgreskapta birimi göstermek için en özlü komut nedir ?


5
Not: bu docker 1.8.1 ile değişmiş gibi görünüyor: aşağıdaki cevabımı görün
VonC

Yanıtlar:


323

docker psKapsayıcı kimliğini almak için kullanın .

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

Misal:

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]

Çıktı

map[/tmp:/tmp] 

görünüşe göre, docker komut araçlarını uygulamak için Git dilinin kullanılmasından kaynaklanmaktadır .

docker inspectOlmadan komut -f formatoldukça ayrıntılı olmalıdır. JSON olduğundan, python veya nodejs'e borulandırabilir ve ihtiyacınız olanı ayıklayabilirsiniz.

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>görüntüye pişmiş katmanları gösterecektir. Ne yazık ki, docker historybiçimlendirilmesi ve görüntülenecek olanı seçmek için seçeneklerin olmaması nedeniyle şaşırmış gibi görünüyor.

--No-trunc bayrağıyla kısa ve ayrıntılı formatları seçebilirsiniz.

$ 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

İşte ayrıntılı bir örnek.

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 Çıktıyı kullanabileceğiniz bir dize biçimine almak için Go biçimi dizeleri hakkında başka bir soru sorabilirsiniz ... bu bir docker sorusu değil bir Go sorusu olacaktır.
Paul

Esneklik için genellikle dahil edilen birimler yoktur, ancak bunun yerine çalışma zamanında eklemek için docker çalıştırmasına -v seçeneği kullanılır. Bir dockerfile seçeneği hatırlıyorum ama kullanılmış olduğunu hiç görmedim. Mevcut olanın kapsamı dışında olduğu için bunlardan herhangi biri hakkında yeni bir soru sormanızı tavsiye edin. Belki başka biri yardımcı olabilir, yeni bir soru yeni cevaplar çekmek için en etkili olacaktır.
Paul

1
Bu soruyu sadece kapsayıcılara ayırdım ve resimler için yeni bir soru sordum .
CivFan

8
Artık Ciltler değil, Bağlar.
SIGIS

Bu web sitesinin de oldukça iyi bir açıklaması var: forums.docker.com/t/host-path-of-volume/12277/10
curveorzos

105

Docker 1.10 ile artık veri birimi kapsayıcıları için yeni komutlarınız var.
(normal konteynerler için, sonraki sürüm, liman işçisi 1.8+ için):


Docker 1.8.1 (Ağustos 2015) ile bir boşdocker inspect -f '{{ .Volumes }}' containerid olurdu !

Şimdi Mounts, aşağıdakiler gibi bağlı yolların bir listesi olan kontrol etmelisiniz :

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

İlk bağlantının yolunu (örneğin) istiyorsanız, bu (dizin 0'ı kullanarak) şöyle olur:

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

As Mike Mitterer yorumlar aşağıda :

Her şeyi güzel yazdırın:

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

Ya da, yorumladı tarafından Mitja , kullanmak jqkomutu .

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

4
Her şeyi güzel yazdırın: docker incelemek -f '{{json .Mounts}}' containerid | python -m json.tool
Mike Mitterer

1
@MikeMitterer Teşekkür ederim. Daha fazla görünürlük için yorumunuzu cevaba ekledim.
VonC

2
Güzel renklerle güzel baskı yapmak istiyorsanız, jqpaketi ubuntu altına kurabilir ve ardından boru oluşturabilirsiniz:docker inspect -f '{{ json .Mounts }}' containerid | jq
Mitja

1
@Mitja Teşekkür ederim. Daha fazla görünürlük için yorumunuzu cevaba ekledim.
VonC

@AlbertValdez Yardım etmekten mutluluk duyuyorum.
VonC

21

Bir kapsayıcı tarafından kullanılan birimlerin adlarını ve bağlama noktası hedeflerini göster:

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

Bu, Docker 1.13 ile uyumludur.


10

Aslında bunu googled ve kendi cevabımı buldum :) Bugünlerde hafızam ... Ve bunu bilmeyenler için commandlinefu bu küçük parçacıkları bulmak ve yayınlamak için güzel bir yer.

Docker birimlerini konteynere göre listeleyin.

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

Örnek çıktı.

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
Bu ihtiyacım olanı yapıyor.
Andres Leon Rangel

8

Konteyneri inceleyerek ve JSON çıktısına bakarak ve birkaç alanı karşılaştırarak hangi hacmin konteynere özel olarak pişirildiği hakkında bilgi alabilirsiniz. Çalıştırdığınızda docker inspect myContainer, Volumesve VolumesRWalanları , hem bir Dockerfile yönergesine hem de komutla komut satırına monte edilen birimler de dahil olmak üzere, bir kabın içine monte edilen TÜM birimler hakkında bilgi verir . Ancak, JSON çıkışındaki alanı kontrol ederek komutu kullanarak kapta hangi birimlerin bağlandığını izole edebilirsiniz . Netleştirmek için, bu alan size özel olarak monte edildiği hacimleri söyler ile komutaVOLUMEdocker run -vdocker run -vHostConfig.Bindsdocker inspectHostConfig.Bindsdocker run-vseçeneği. Dolayısıyla, bu alana alanla çapraz başvuru Volumesyaparsanız VOLUME, Dockerfile'daki yönergeleri kullanarak kap içine hangi hacimlerin pişirildiğini belirleyebileceksiniz.

Bir grep bunu başarabilir:

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

Ve...

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

Ve örneğimde /var/docker/docker-registry/config, konteyneki komutu komutumdaki seçeneği /registrykullanarak monte ettiğimi görebilirsiniz ve Dockerfile'ımdaki yönergeyi kullanarak ve birimleri bağladım. Kap gelmez bu bilgileri almak için çalışıyor olması gerekir, ancak bu kitlenin amacıyla en az bir defa çalıştırmak edilmiştir gerekiyor senin JSON çıktısını komutu.-vdocker run/data/configVOLUMEHostConfigdocker inspect


1
Ne HostConfig.Bindsve nasıl farklıdır .Volumes@ Paul dan cevap görülen?
CivFan

1
Farkı keşfetmek için uzak API dokümanları ve kaynak üzerinden geçen son saati geçirdim ve söyleyebileceğim şeyden, .Volumes"boş nesnelere kap içindeki nesne eşleme bağlama noktası yollarını (dizeleri) listeler ve HostConfig.Bindsgerçek bağlama açıklar kapta monte edilmiş hacimler. Bana öyle geliyor ki HostConfig.Binds, .Volumesdaha iyi bir akıl yürütmeyi duymak isterim, ancak okumak istediğiniz şey budur .
L0j1k

1
#dockerFreenode'a (docker'ın ana kanalı) sordum ve bir şey duyduğumda, kesinlikle burada daha fazla bilgi ile güncelleyeceğim. Burada fark hakkında sorduğunuz çok iyi bir soru. Teşekkürler!
L0j1k

1
@CivFan Bir şekilde yanılmışım. Görüntüye hangi birimlerin dönüştürüldüğünü görmek için, docker denetlemesinin JSON çıktısındaki Ciltler ve HostConfig.Binds alanlarını BOTH kullanmanız gerekir. Sorunuzu, daha önce veya daha önce sahip olduğum soruya göre aşağı yukarı doğru cevaplayan bu cevapta kendimi düzelttim. İyi şanslar! :)
L0j1k

2
HostConfig.BindsYalnızca birimin ana bilgisayar yolu belirtildiğinde doldurulduğunu fark ettiniz mi? Örneğin, docker run -d -v /docker-test:/docker-test postgresvs docker run -d -v /docker-test postgres. Docker, bu iki ciltli vakayı bir nedenden dolayı oldukça farklı ele alıyor gibi görünüyor.
CivFan

8

Docker 1.8 için şunu kullanıyorum:

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

8

tüm kapsayıcıların adını, her kapsayıcıya iliştirilmiş ilgili birimlerle listelemek istiyorsanız bunu deneyebilirsiniz:

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

örnek çıktı:

/ 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 - kapsayıcı adı

[..] - conatiner'a bağlı hacimler


1
Bu teknik olarak sorunun bir cevabı olsa da, açıklama eksiktir. Lütfen yorumunuzu parametrelerin ne yaptığını ve askerin sorusunda ortaya çıkan sorunu çözmek için neden bunları kullanmak isteyeceğini açıklayacak şekilde düzenleyin.
shawty

6

Kapsayıcıları çalıştırmak için birim bilgilerini almak için bir satır komutu:

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

Çıktı:

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

Docker sürümü:

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

Liman işçileri oluşturma kullanıcıları için yararlı varyasyonlar:

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

Bu, düzgün bir şekilde ayrıştırılabilir hacim bilgisi verecektir. Wordpress docker-compose'den örnek:

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 

Çıktı, kullanılan hacimleri (ve bağlama noktalarını) listeleyen her kap için bir satır içerir. İstediğiniz bilgilerin çıktısını almak için {{.Name}}: {{.Destination}} bölümünü değiştirin.

Sadece basit bir cilt listesi istiyorsanız, her satıra bir tane

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

Yedeklenecek birimlerin listesini oluşturmak harika. Bu tekniği Blacklabelops Volumerize ile birlikte bir docker-compose içindeki tüm kaplar tarafından kullanılan tüm birimleri yedeklemek için kullanıyorum. Volumerize belgeleri bunu söylemez, ancak kalıcı bir kapta kullanmanıza veya hizmetleri başlatmak ve durdurmak için yerleşik tesisleri kullanmanıza gerek yoktur. Yedekleme ve servis kontrolü gibi kritik işlemleri gerçek kullanıcıya (liman işçisinin dışında) bırakmayı tercih ederim. Yedeklemelerim gerçek (docker olmayan) kullanıcı hesabı tarafından tetiklenir ve hizmetleri durdurmak, kullanımdaki tüm birimleri yedeklemek ve son olarak docker-compose yeniden başlatmaya başlamak için docker-compose stop komutunu kullanın.



1

İşte bir liman işçisinin oluşturduğu bağlanma noktalarını bulmak için sürümüm. Birimleri yedeklemek için bunu kullanın.

 # 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

Bu, önceki çözümlerin bir kombinasyonudur.


0

Pwsh (powershell core) kullanıyorsanız, deneyebilirsiniz

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

ayrıca hem konteyner adını hem de Bağları aşağıdaki gibi görebilirsiniz

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

Çıktı json olarak dönüştürüldüğünden, sahip olduğu herhangi bir özelliği elde edebilirsiniz.


0

Bunu -f Go şablon sözdizimi olmadan yapabiliriz:

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

İlk jq işlemi jq .[]nesne sarıcısını şeritler {}.

İkinci jq işlemi tüm Mount öğelerini döndürür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.