Dockerイメージをインポートする前にDockerイメージのサイズを確認するにはどうすればよいですか?

Dockerイメージをインポートする前にDockerイメージのサイズを確認するにはどうすればよいですか?

次のように、Docker Webサイトで利用可能な画像ファイルを検索できます。

インポートする前にダウンロードサイズが何であるかをどうやって知ることができますか?

docker.io pull [image]

答え1

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/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月)からウェブサイトにこの情報が表示されます。 [ラベル]タブをクリックすると、圧縮されたサイズが表示されます。

ドッカーハブのUbuntuの例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

関連情報