Docker 이미지를 가져오기 전에 Docker 이미지의 크기를 어떻게 확인하나요?

Docker 이미지를 가져오기 전에 Docker 이미지의 크기를 어떻게 확인하나요?

다음과 같이 Docker 웹사이트에서 사용 가능한 이미지 파일을 검색할 수 있습니다.

가져오기 전에 다운로드 크기가 무엇인지 어떻게 알 수 있나요?

docker.io pull [image]

답변1

Docker의 API를 확인하세요.도커 원격 API v1.10, 이미지의 크기를 얻을 수 있는 방법이 없는 것 같습니다. 섹션 "2.2 이미지"에서는 이미지 쿼리 방법에 대한 사양을 보여줍니다.

    GET /images/json?all=0 HTTP/1.1

**Example response**:

    HTTP/1.1 200 OK
    Content-Type: application/json

    [
      {
         "RepoTags": [
           "ubuntu:12.04",
           "ubuntu:precise",
           "ubuntu:latest"
         ],
         "Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c",
         "Created": 1365714795,
         "Size": 131506275,
         "VirtualSize": 131506275
      },
      {
         "RepoTags": [
           "ubuntu:12.10",
           "ubuntu:quantal"
         ],
         "ParentId": "27cf784147099545",
         "Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
         "Created": 1364102658,
         "Size": 24653,
         "VirtualSize": 180116135
      }
    ]

하지만 이 쿼리는 실제 Docker 인스턴스에 대한 것이어야 합니다. 다음 예에서는 위의 RESTful 쿼리를 사용하는 방법을 보여줍니다.

$ echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 858
Connection: close
Date: Fri, 20 Dec 2013 16:02:41 GMT

[{"Repository":"ubuntu","Tag":"12.04","Id":"8dbd9e392...",
"Created":1365714795,"Size":131502179,"VirtualSize":131502179},
{"Repository":"ubuntu","Tag":"latest","Id":"8dbd9e392...",
"Created":1365714795,"Size":131502179,"VirtualSize":131502179},
{"Repository":"ubuntu","Tag":"precise","Id":"8dbd9e392...",
"Created":1365714795,"Size":131502179,"VirtualSize":131502179},
{"Repository":"ubuntu","Tag":"12.10","Id":"b750fe792...",
"Created":1364102658,"Size":24653,"VirtualSize":180116135},
{"Repository":"ubuntu","Tag":"quantal","Id":"b750fe792...",
"Created":1364102658,"Size":24653,"VirtualSize":180116135}]

이 특정 RESTful 호출을 사용하여 공개 저장소를 쿼리할 방법을 찾지 못했습니다. docker.io 이미지를 쿼리하는 유일한 RESTful 방법은 검색을 통한 것으로 보이지만 GET /images/searchAPI는 이에 대해 반환되는 크기 속성을 표시하지 않습니다.

인용하다

답변2

이는 귀하의 질문에 대한 직접적인 답변은 아니지만 여전히 도움이 되기를 바랍니다.

내부에디스크 사용량 스크립트도커 실험 나는 다음과 같은 것을 사용합니다 :

docker run --entrypoint=/bin/sh $image -c 'du -sh / 2>/dev/null | cut -f1'

예를 들어 다음과 같이 실행할 수 있습니다.

docker run --entrypoint=/bin/sh ubuntu -c 'du -sh / 2>/dev/null | cut -f1'

또는 다음 스크립트를 다운로드할 수 있습니다.디스크 사용량./disk-usage "ubuntu busybox gcc"예를 들어 다음 3개 이미지의 디스크 사용량을 표시하려면 다음을 실행하세요 (보고됨 du -sh).

Image   Disk usage
-----   ----------
ubuntu  209M
busybox 2.6M
gcc     1.5G

특정 이미지에 필요한 실제 다운로드를 표시하지 않고 이미지를 다운로드한 후 결과를 표시하지만, 해당 이미지가 다른 이미지와 비교하여 얼마나 부풀려졌는지에 대한 정보를 제공합니다.

한 컴퓨터에서 실행하여 이미지를 다른 컴퓨터에 다운로드할지 아니면 전혀 사용할지 결정할 수 있습니다.

답변3

나는 이것이 오래된 질문이라는 것을 알고 있지만 오늘(2020년 10월)부터 웹사이트에 이 정보가 표시됩니다. 라벨 탭을 클릭하면 압축된 크기가 표시됩니다.

도커 허브의 우분투 예https://hub.docker.com/_/ubuntu?tab=tags

여기에 이미지 설명을 입력하세요.

답변4

  1. Docker Hub 이미지의 경우:
curl -s -H "Authorization: JWT " "https://hub.docker.com/v2/repositories/library/<image-name>/tags/?page_size=100" | jq -r '.results[] | select(.name == "<tag-name>") | .images[0].size' | numfmt --to=iec-i
  1. Microsoft Container Registry와 같은 다른 레지스트리의 이미지의 경우. 저는 3가지 방법을 생각해냈습니다.

    • 매니페스트 데이터를 관찰하는 데 사용되며 docker manifest inspect, 이를 통해 이미지의 압축된 크기를 얻는 방법에 대한 아이디어를 얻을 수 있습니다.

    docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' '{sum+=$NF} END {print sum}' | numfmt --to=iec-i
    

    을 활성화하려면 파일을 docker manifest inspect편집 하고 로 설정하십시오 . (인용하다:~/.docker/config.jsonexperimentalenable도커 체크리스트 확인)

    • 이미지를 Docker Hub에 푸시하면 Docker Hub 웹사이트에서 이미지의 압축된 크기를 얻을 수 있습니다.

    • docker save이미지를 .tar 파일에 저장한 다음 .tar.gz 파일로 압축하는 데 사용됩니다 .

docker save my-image:latest > my-image.tar

# Compress the .tar file
gzip my-image.tar

# Check the size of the compressed image
ls -lh my-image.tar.gz

관련 정보