docker 웹 사이트에서 다음과 같이 사용 가능한 이미지 파일을 검색 할 수 있습니다.
가져 오기 전에 다운로드 크기를 어떻게 알 수 있습니까?
docker.io pull [image]
docker 웹 사이트에서 다음과 같이 사용 가능한 이미지 파일을 검색 할 수 있습니다.
가져 오기 전에 다운로드 크기를 어떻게 알 수 있습니까?
docker.io pull [image]
답변:
Docker 용 API 인 Docker Remote 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 메소드는 search을 통한 GET /images/search
것이지만 API는이에 대해 반환되는 크기 속성을 표시하지 않습니다.
docker search
이것은 귀하의 질문에 대한 직접적인 대답은 아니지만 그럼에도 도움이되기를 바랍니다.
Docker 실험 의 디스크 사용 스크립트 에서 다음과 같은 것을 사용합니다.
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
및 예 ./disk-usage "ubuntu busybox gcc"
를 들어 디스크 사용량 (에 의해보고 됨 du -sh
)을 표시하여 3 개의 이미지를 표시 할 수 있습니다.
Image Disk usage
----- ----------
ubuntu 209M
busybox 2.6M
gcc 1.5G
특정 이미지에 필요한 실제 다운로드는 표시되지 않으며 이미지를 다운로드 한 후 결과가 표시되지만 다른 이미지와 비교하여 특정 이미지가 어떻게 부풀려 졌는지에 대한 아이디어를 제공합니다.
한 시스템에서이 이미지를 실행하여 다른 시스템에서 해당 이미지를 다운로드 할 것인지 아니면 전혀 사용할 것인지 결정할 수 있습니다.
HTTP API v2의 경우 크기는 size
및 아래의 태그 리소스를 통해 사용할 수 있습니다 full_size
. 내 리포지토리 태그 중 하나의 예제 URL은 다음과 같습니다.
https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1
풀 작업을 위해 도커 코드를 실제로 살펴보면 답이 있다고 생각합니다. 컨테이너의 이미지가 캐시되지 않은 경우 이미지를 가져 오는 동안 도커는 먼저 레이어 수, 각 레이어의 크기 등과 같은 레지스트리에서 이미지에 대한 정보를 수집합니다.
이 파일을 읽는 것을 참조합니다.
https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go
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
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.json
파일을 편집 하고로 설정 experimental
하십시오 enable
. (참조 : docker manifest inspect )
이미지를 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