次のように、Docker Webサイトで利用可能な画像ファイルを検索できます。
プルする前のダウンロードサイズを確認するにはどうすればよいですか?
docker.io pull [image]
次のように、Docker Webサイトで利用可能な画像ファイルを検索できます。
プルする前のダウンロードサイズを確認するにはどうすればよいですか?
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メソッドは検索のみでした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
and run eg example ./disk-usage "ubuntu busybox gcc"
to have disk usage(によって報告されるdu -sh
)をこれらの3つのイメージに対して表示します:
Image Disk usage
----- ----------
ubuntu 209M
busybox 2.6M
gcc 1.5G
特定の画像に必要な実際のダウンロードは表示されず、画像をダウンロードした後に結果が表示されることに注意してください。
あるマシンで実行して、そのイメージを他のマシンにダウンロードするか、まったく使用するかを決定できます。
HTTP API v2の場合、サイズはsize
およびの下のタグリソースを介して利用できますfull_size
。レポのタグの1つからのURLの例を次に示します。
https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1
プル操作のdockerコードを実際に調べてみると、答えはそこにあると思います。コンテナーのイメージがキャッシュされていない場合、イメージのプル中に、Dockerはまず、レイヤー数、各レイヤーのサイズなどのレジストリからイメージに関する情報を収集します。
このファイルを読むことをお勧めします。
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 Webサイトで画像の圧縮サイズを取得できます。
を使用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