web-dev-qa-db-ja.com

プルする前にDockerイメージのサイズを取得しますか?

どのようにしてDockerイメージのサイズを取得できますかbefore彼らはそれを自分のマシンにプルしますか?

33
Joseph Idziorek

DockerハブでDockerイメージを検索すると、2つのタブが表示されます-Repo InfoおよびTags。 [タグ]タブを開くと、その画像に対してプルできるすべてのタイプの画像のサイズが表示されます。

11
Akshay Mahajan
  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.jsonファイルとexperimentalenableに設定します。(参照: 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
4
binaryDi

Dockerイメージには多くのレイヤーがあるため、合計イメージサイズは、イメージが使用しているレイヤーの数によって異なります。

Dockerレジストリで画像とそのレイヤー(合計サイズを含む)を視覚化するための優れたツールは、次のとおりです Image LayersCentury Link Labs から

Github: imagelayers-graph

0
Rico

プル操作のDockerコードを実際に調べれば、答えはそこにあると思います。コンテナーのイメージがキャッシュされていない場合、イメージのプル中に、Dockerは最初にレイヤーの数、各レイヤーのサイズなどのレジストリからイメージに関する情報を収集します。

このファイルを読んで参照します。

https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go

0
Arif A.