私はcentos、Tomcatの画像を引き出したい...のように彼らのsha256コードを使用して
docker pull myimage@sha256:0ecb2ad60
しかし、どこでも使用できるsha256コードは見つかりません。
Dockerhubリポジトリでsha256コードのヒントを確認しましたが、見つかりませんでした。タグで画像をダウンロードしました
docker pull Tomcat:7-jre8
docker inspect
で画像をチェックして、メタデータにsha256コードがあるかどうかを確認しますが、何もありません(画像のsha256コードを追加すると、おそらくsha256コードが変更されます)。
自分で画像のsha256コードを計算して使用する必要がありますか?
見ただけで:
画像を取得すると、出力の下部にsha256コードが表示されます(Digest:sha ....):
docker pull Tomcat:7-jre8
7-jre8: Pulling from library/Tomcat
902b87aaaec9: Already exists
9a61b6b1315e: Already exists
...
4dcef5c50d60: Already exists
Digest: sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f
Status: Image is up to date for Tomcat:7-jre8
この社コード
sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f
後で画像をプルするために使用できます
docker pull Tomcat @ sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f
これにより、イメージが変更されておらず、生産に安全に使用できることを確認できます。
コメントでOhJeezが提案した編集。
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE
私はあなたもこれを得ることができると信じています
docker inspect --format='{{.RepoDigests}}' $IMAGE
Docker 1.9でのみ機能し、元々イメージがダイジェストによってプルされていた場合。 詳細はdocker issue trackerにあります。
docker images --digests
で取得できます
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
docker/ucp-agent 2.1.0 sha256:a428de44a9059f31a59237a5881c2d2cffa93757d99026156e4ea544577ab7f3 583407a61900 3 weeks ago 22.3 MB
既存の回答に加えて、--digests
を実行中にdocker images
オプションを使用して、所有しているすべての画像のダイジェストのリストを取得できます。
docker images --digests
Grepを追加してさらにドリルダウンできます
docker images --digests | grep Tomcat
これは、古い 非推奨Docker Hub API で確認できるIdフィールドでした。
GET /v1/repositories/foo/bar/images HTTP/1.1
Host: index.docker.io
Accept: application/json
Parameters:
namespace – the namespace for the repo
repo_name – the name for the repo
応答例:
HTTP/1.1 200
Vary: Accept
Content-Type: application/json
[{"id": "9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f",
"checksum": "b486531f9a779a0c17e3ed29dae8f12c4f9e89cc6f0bc3c38722009fe6857087"},
{"id": "ertwetewtwe38722009fe6857087b486531f9a779a0c1dfddgfgsdgdsgds",
"checksum": "34t23f23fc17e3ed29dae8f12c4f9e89cc6f0bsdfgfsdgdsgdsgerwgew"}]
しかし、これはnotであり、新しいドッカーディストリビューション。
「 issue 628: "タグ名付きの画像IDを取得"」を参照
タグハンドルとともに画像IDをリストするために使用される
/v1/
レジストリレスポンス/repositories/<repo>/tags
./v2/
はハンドルを与えるように見えるだけです。IDを取得して、ローカルで見つかったIDと比較すると便利です。 IDを見つけることができる唯一の場所は、マニフェストの
v1Compat
セクションにあります(必要な情報が多すぎる)
現在(2015年半ば)の答えは次のとおりです。
V1 APIのこのプロパティは、画像をバックエンドに保存する方法にとって非常に計算コストがかかりました。セカンダリルックアップを回避するために、タグ名のみが列挙されます。
さらに、V2 APIはイメージIDを処理しません。むしろ、ダイジェストを使用してレイヤーを識別します。これは、レイヤーのプロパティとして計算でき、独立して検証可能です。
@zelphirで述べたように、ダイジェストを使用することは、ローカルのみのイメージには存在しないため、良い方法ではありません。画像ID shaは、タグ/プル/プッシュなどで最も正確で一貫していると思います。
docker inspect --format='{{index .Id}}' $IMAGE
トリックを行います。
もう一度docker pull Tomcat:7-jre8
を発行するだけで、必要なものが得られます。