どのようにしてDockerイメージのサイズを取得できますかbefore彼らはそれを自分のマシンにプルしますか?
DockerハブでDockerイメージを検索すると、2つのタブが表示されます-Repo Info
およびTags
。 [タグ]タブを開くと、その画像に対してプルできるすべてのタイプの画像のサイズが表示されます。
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
Dockerイメージには多くのレイヤーがあるため、合計イメージサイズは、イメージが使用しているレイヤーの数によって異なります。
Dockerレジストリで画像とそのレイヤー(合計サイズを含む)を視覚化するための優れたツールは、次のとおりです Image LayersCentury Link Labs から
Github: imagelayers-graph
プル操作のDockerコードを実際に調べれば、答えはそこにあると思います。コンテナーのイメージがキャッシュされていない場合、イメージのプル中に、Dockerは最初にレイヤーの数、各レイヤーのサイズなどのレジストリからイメージに関する情報を収集します。
このファイルを読んで参照します。
https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go