도커 컨테이너의 볼륨을 어떻게 나열합니까?


213

레지스트리의 도커 이미지를 사용할 때 종종 이미지 컨테이너에서 생성 된 볼륨을 확인해야합니다.

참고 : Red Hat 7에서 docker 버전 1.3.2를 사용하고 있습니다.

postgresDocker Registry 의 공식 이미지에는에 컨테이너에 대해 구성된 볼륨이 있습니다 /var/lib/postgresql/data.

에서 볼륨 보여줄 수있는 가장 간결한 명령 기능 /var/lib/postgresql/dataA의 postgres컨테이너는?


5
참고 : 보인다 고정 표시기 1.8.1로 변경하려면 다음을 참조 아래에 내 대답을
VonC

답변:


323

docker ps컨테이너 ID를 얻는 데 사용 합니다.

그때 docker inspect -f '{{ .Mounts }}' containerid

예:

터미널 1

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

터미널 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]

출력

map[/tmp:/tmp] 

분명히 docker 명령 도구를 구현하기 위해 Go 언어를 사용하기 때문 입니다.

docker inspect포함하지 않는 명령은 -f format매우 상세하다. JSON이기 때문에 파이썬이나 nodejs로 파이프하고 필요한 것을 추출 할 수 있습니다.

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>이미지에 구운 레이어를 보여줍니다. 불행히도 docker history형식과 표시되는 항목을 선택할 수있는 옵션이 부족하여 혼란스러워 보입니다.

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

자세한 예는 다음과 같습니다.

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 또한 출력 형식을 사용할 수있는 문자열 형식으로 출력하기 위해 Go 형식 문자열에 대한 또 다른 질문을 할 수 있습니다 .... Docker 질문이 아닌 Go 질문입니다.
Paul

유연성을 위해 일반적으로 볼륨이 포함되어 있지 않지만 대신 docker run에 -v 옵션을 사용하여 런타임에 연결합니다. 나는 dockerfile 옵션을 회상하는 것처럼 보이지만 사용 된 것을 본 적이 없습니다. 현재 질문의 범위를 벗어난 것으로 이것에 대해 새로운 질문을하는 것이 좋습니다. 다른 사람이 도울 수 있습니다. 새로운 질문에서 새로운 답변을 얻는 것이 가장 효과적 일 것입니다.
Paul

1
나는이 질문을 단지 컨테이너로 분류하고 이미지에 대한 새로운 질문을했다 .
CivFan

8
더 이상 볼륨이 아니라 마운트입니다.
SIGIS

이 웹 사이트도 꽤 잘 설명되어 있습니다 : forums.docker.com/t/host-path-of-volume/12277/10
curveorzos 1

105

docker 1.10에서는 이제 데이터 볼륨 컨테이너에 대한 새로운 명령이 있습니다.
(일반 컨테이너의 경우 docker 1.8+에 대해서는 다음 섹션을 참조하십시오) :


고정 표시기 1.8.1 (2015 8 월)으로, a는 docker inspect -f '{{ .Volumes }}' containerid빈!

이제 Mounts다음과 같은 마운트 된 경로 목록 인 확인해야합니다 .

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

첫 번째 마운트 경로 (예 : 0)를 원한다면 다음과 같습니다 (인덱스 0 사용).

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

마이크 Mitterer이 코멘트 아래 :

모든 것을 인쇄하십시오.

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

또는, 주석 에 의해 미챠 , 사용 jq명령을 .

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

4
전체 내용을 정확하게 인쇄 : docker inspect -f '{{json .Mounts}}'containerid | python -m json.tool
Mike Mitterer

1
@MikeMitterer 감사합니다. 더 많은 가시성을 제공하기 위해 귀하의 의견을 답변에 포함 시켰습니다.
VonC

2
예쁜 색상으로 예쁘게 인쇄하려면 jq우분투 아래 에 패키지를 설치 한 다음 파이프로 연결하면됩니다.docker inspect -f '{{ json .Mounts }}' containerid | jq
Mitja

1
@Mitja 감사합니다. 가시성을 높이기 위해 귀하의 의견을 답변에 포함 시켰습니다.
VonC 2016 년

@AlbertValdez 다행입니다.
VonC

21

컨테이너가 사용하는 볼륨의 이름과 마운트 포인트 대상을 표시합니다.

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

Docker 1.13과 호환됩니다.


9

나는 실제로 이것을 구글 검색하고 내 자신의 대답을 찾았습니다 :) 요즘 내 기억 ... 그리고 그것에 대해 모르는 사람들을 위해 commandlinefu 는이 일종의 발췌 문장을 찾아 게시하기에 좋은 곳입니다.

컨테이너별로 도커 볼륨을 나열합니다.

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

출력 예.

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

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

/gitlab_runner_1

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

1
이것은 내가 필요한 것을합니다.
Andres Leon Rangel

8

컨테이너를 검사하고 JSON 출력을보고 몇 개의 필드를 비교하여 컨테이너에 구체적으로 구운 볼륨에 대한 정보를 얻을 수 있습니다. 를 실행 docker inspect myContainer하면 VolumesVolumesRW필드 는 지시문이 있는 Dockerfile과 명령이있는 명령 행에 마운트 된 볼륨을 포함하여 컨테이너에 마운트 된 모든 볼륨 에 대한 정보를 제공합니다 . 그러나 JSON 출력 에서 필드를 확인 하여 명령을 사용하여 컨테이너에 마운트 된 볼륨을 분리 할 수 ​​있습니다 . 명확하게하기 위해이 필드는 명령을 통해 어떤 볼륨이 마운트되었는지를 알려줍니다 .VOLUMEdocker run -vdocker run -vHostConfig.Bindsdocker inspectHostConfig.Bindsdocker run-v선택권. 따라서이 필드를 필드와 상호 참조 하면 Dockerfile의 지시문을 Volumes사용하여 컨테이너에 구운 볼륨을 확인할 수 있습니다 VOLUME.

grep은 다음과 같이이를 수행 할 수 있습니다.

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

과...

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

그리고 내 예제에서는 명령 의 옵션 /var/docker/docker-registry/config/registry사용하여 컨테이너에 마운트했으며 Dockerfile 의 지시문을 사용하여 및 볼륨을 마운트했습니다 . 컨테이너는 하지 않습니다 이 정보를 얻기 위해 실행해야 할 필요가 있지만 채울하기 위해 적어도 한 번 실행 한 필요가 당신의 JSON 출력 명령을 사용합니다.-vdocker run/data/configVOLUMEHostConfigdocker inspect


1
@Paul의 답변에서 볼 수있는 HostConfig.Binds것과 무엇이 무엇 이고 어떻게 다른 .Volumes가요?
CivFan

1
방금 지난 한 시간 동안 원격 API 문서소스 를 살펴보고 차이점을 발견했으며, 말할 수있는 .Volumes것부터 "컨테이너 내부의 객체 매핑 마운트 포인트 경로 (문자열)를 빈 객체로 나열"하고 HostConfig.Binds실제 바인딩에 대해 설명했습니다. 컨테이너에 마운트 된 볼륨. 그 다음 날 것으로 보인다 HostConfig.Binds는 대, 읽고 싶은 것입니다 .Volumes더 나은 이유를 듣고 싶어요 불구하고.
L0j1k

1
#dockerFreenode (도커의 기본 채널) 에서 질문을 받았는데 , 다시 들리는 내용이 있으면 여기에서 더 자세한 정보로 업데이트하겠습니다. 차이점에 대해 여기에서 물었던 매우 좋은 질문입니다. 감사!
L0j1k

1
@CivFan 나는 틀렸다. 이미지에 구운 볼륨을 확인하려면 docker inspect의 JSON 출력에있는 Volumes 및 HostConfig.Binds 필드를 모두 사용해야합니다. 나는이 답변에서 나 자신을 수정했다. 이제는 이전에했던 것과 비교하여 귀하의 질문에 다소 정확하게 대답합니다. 행운을 빕니다! :)
L0j1k

2
HostConfig.Binds볼륨의 호스트 경로가 지정된 경우에만 채워지는 것을 보셨습니까 ? 예를 들어는 docker run -d -v /docker-test:/docker-test postgresdocker run -d -v /docker-test postgres. 도 커가 어떤 이유로 두 가지 볼륨 사례를 상당히 다르게 처리하는 것 같습니다.
CivFan

8

Docker 1.8의 경우 다음을 사용합니다.

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

8

각 컨테이너에 연결된 관련 볼륨과 함께 모든 컨테이너 이름을 나열하려면 다음을 시도하십시오.

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

출력 예 :

/ 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-컨테이너 이름

[..]-콘티 네이터에 부착 된 볼륨


1
이것은 기술적으로 질문에 대한 답변이지만 설명이 부족합니다. 매개 변수가 수행하는 작업과 질문 작성자가 질문에 제기 된 문제를 해결하기 위해 매개 변수를 사용하려는 이유를 설명하도록 주석을 편집하십시오.
shawty

6

다음은 컨테이너 실행에 대한 볼륨 정보를 가져 오는 한 줄 명령입니다.

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

출력은 다음과 같습니다

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

도커 버전 :

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

도커 작성 사용자에게 유용한 변형 :

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

이것은 구문 분석 가능한 볼륨 정보를 매우 깔끔하게 출력합니다. 내 워드 프레스 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 

출력에는 사용 된 볼륨 (및 마운트 지점)을 나열하는 각 컨테이너마다 한 줄이 포함됩니다. {{.Name}} : {{.Destination}} 부분을 변경하여 원하는 정보를 출력하십시오.

간단한 볼륨 목록을 원하면 한 줄에 하나씩

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

백업 할 볼륨 목록을 생성하는 데 좋습니다. 이 기술을 Blacklabelops Volumerize 와 함께 사용하여 docker-compose 내의 모든 컨테이너가 사용하는 모든 볼륨을 백업합니다. Volumerize 문서는이를 호출하지 않지만 영구 컨테이너에서 사용하거나 서비스 시작 및 중지를 위해 내장 기능을 사용할 필요는 없습니다. 백업 및 서비스 제어와 같은 중요한 작업을 실제 사용자 (외부 도커)에게 맡기는 것을 선호합니다. 내 백업은 실제 (도 커가 아닌) 사용자 계정에 의해 트리거되고 docker-compose stop을 사용하여 서비스를 중지하고 사용중인 모든 볼륨을 백업 한 다음 docker-compose start가 다시 시작됩니다.



1

도커 작성의 마운트 지점을 찾는 내 버전은 다음과 같습니다. 이를 사용하여 볼륨을 백업하십시오.

 # 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

이것은 이전 솔루션의 조합입니다.


0

pwsh (powershell core)를 사용하는 경우 시도해 볼 수 있습니다

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

또한 아래와 같이 컨테이너 이름과 마운트를 모두 볼 수 있습니다

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

출력이 json으로 변환되므로 모든 속성을 얻을 수 있습니다.


0

-f Go 템플릿 구문없이 수행 할 수 있습니다.

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

첫 번째 jq 조작 jq .[]은 오브젝트 {}랩퍼를 제거합니다 .

두 번째 jq 작업은 모든 마운트 항목을 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.