2017-11-02 10 views
1

私はDocker imageをdockerhubに持っています。これはPHPバージョンを最新のものに更新する必要があるため、これは数回構築されています。私はそのイメージの以前のバージョンを使用する必要があり、私は行く方法は、不変の識別子別名ダイジェストを使用することだと思う。Dockerイメージから不変の識別子(ダイジェスト)のリストを取得する方法は?

Hereは、指定されたイメージをダイジェストでプルする方法のドキュメントですが、そのイメージからすべてのダイジェストを取得する方法が見つかりません。

特定のビルドをダブルクリックすると、ビルドコードなどの特定の情報が得られます。たとえば、berpxpunhmqe7bqh6lce5ubですが、そのようなダイジェストではないと思います。

特定のビルドのダイジェストはどのようにして見つけられますか?

答えて

2

を消化することにより、以下のようにダイジェストがdocker image inspectで行うことができますプルで使用することを見つけ、あなたが以前のバージョンのタグ/識別子を有し、および/またはあなたの中にバージョンローカルイメージキャッシュを持っていると仮定すると:

この例では
$ docker image inspect --format "{{.RepoDigests}}" alpine:3.6 
[[email protected]:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab] 

私は高山画像の3.6タグで探していますし、応答は私がdocker pullようなコマンドで使用できる文字列です。

$ docker pull [email protected]:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab 
sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab: Pulling from library/alpine 
Digest: sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab 
Status: Image is up to date for [email protected]:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab 

特定の画像の潜在的な問題は、すべてのビルドでlatestタグが使用されているように見えるため、古い画像のローカルキャッシュを持たない限り、古い画像を見つけることはかなり難しいかもしれません。sha256以前のビルドへの参照をダイジェストします。

ローカルキャッシュされた情報は、docker system pruneや、その他のクリーンアップユーティリティで削除されていない場合、前の画像のダイジェストを見つけるためにいくつかの可能な方法があります。

  1. docker images -a | grep <image name>は、すべての画像を表示するために使用することができますが、タグのないものも含む。以下の例は、更新されたubuntuを示しています:最新私は古いイメージにまだアクセスしています。そのID(ダイジェストではない)を使用して、同じdocker image inspect --format '{{.RepoDigests}}' <image ID>を使用して、ubuntuの古い「ビルド」の実際のダイジェストを取得することができます。

  2. 私が実行されているコンテナを持っていたか、画像の以前のバージョンを使用して終了した場合は、私が最初にコンテナを検査し、画像IDを発見し、その画像を検査することによって、その画像のダイジェストを見つけることができるが、前述のIDを使用して、古いイメージのダイジェストを取得します。このやや不自然な例では、私は私がまだ有効にタグ付けすることを起こる画像IDを、見つけるために、検査EXITEDコンテナ、1edd ...を、持っているが、それは私がそれから取得するimage inspectを使用することができますIDだ使用しますたとえそれが私のイメージキャッシュにもはやタグ付けされていなくても、ダイジェストします。

例1:

$ docker images -a | grep ubuntu 
ubuntu  latest  747cb2d60bbe 3 weeks ago 122MB` 
ubuntu  <none>  ebcd9d4fca80 5 months ago 118MB 
$ docker image inspect --format '{{.RepoDigests}}' ebcd9 
[[email protected]:382452f82a8bbd34443b2c727650af46aced0f94a44463c62a9848133ecb1aa8] 

例2:

$ docker ps -aq 
1edd14b528db 
$ docker container inspect 1edd | grep Image 
    "Image": "sha256:76da55c8019d7a47c347c0dceb7a6591144d232a7dd616242a367b8bed18ecbc", 
     "Image": "alpine:3.6", 
$ docker image inspect --format '{{.RepoDigests}}' 76da55 
[[email protected]:f006ecbb824d87947d0b51ab8488634bf69fe4094959d935c0c103f4820a417d] 
+0

私は毎回同じタグを使用しているまさに私の問題であり、私はイメージを構築し、その問題となる。タグが十分だが悲しいことに、私はダイジェストを検索する必要がなくなるたびにバージョンを使用することになるが、これを正しく作っていないので、今は問題がある。他の答えがなければ私はあなたのことを受け入れるでしょう。 – ReynierPM

+0

イメージキャッシュを使用していたコンテナからダイジェストを見つけたり、ローカルキャッシュにすべてのタグの付いていないイメージを表示したりする例をいくつか追加しました。それが役に立ったら教えてください。 –

+0

これは私が仕事で使っている現在のイメージ(私が見つけたいもの)のダイジェストを見つけるのに役立ちます。そのため、今日後で家でテストし、そのダイジェストが動作するかどうかを確認します。ありがとう私はあなたの答えを受け入れた – ReynierPM

関連する問題