Docker で最も誤解されやすい部分は、最新のラベルです。文字通りの意味では本当の意味が伝わらないため、混乱の原因は主に名前です。この記事では、latest タグの実際の機能とその正しい使用方法を学びましょう。
イメージにタグを付ける方法は通常 2 つあります。1 つは docker tag コマンドを使用する方法、もう 1 つは docker build の実行時に -t を使用してパラメータを渡す方法です。どちらの場合も、パラメーターは通常、repository_name:tag_name の形式になります (例: docker tag myrepo:mytag)。リポジトリが Docker Hub にアップロードされる場合、リポジトリの名前の前に Docker Hub のユーザー名とスラッシュが付加されます (例: amouat/myrepo:mytag)。タグ部分にパラメーターが追加されていない場合 (例: docker tag myrepo:1.0 myrepo)、Docker は自動的に最新のタグを付けます。上記の内容はすでにご存知かもしれませんが、実際にはこれだけの内容であり、魔法のようなものは何もありません。
画像ラベルが最新であるからといって、これがリソース ライブラリ内の最新の画像であると考えることはできません。このリソース ライブラリの所有者が同意した場合にのみ、最新のラベルが付いたイメージが最新のイメージである必要があります。たとえば、古い画像を最新のタグが付いた画像に簡単に変更できます。例:
ここで最新のタグが付いた画像はバージョン 0.9 の 2 週間前の画像と同じですが、1.0 の画像は 1 分前の画像です。
なぜこのラベルが多くの人を混乱させるのか、実はもっと簡単に理解できます。 「最新の画像を取得するだけです」この文は、最新のタグが付いた画像を取得することを意味するのでしょうか、それとも最新の画像を取得することを意味しますか?この二つは同じですか?それらはリポジトリ内の最新のイメージですか?最新の安定版イメージですか、それとも最新の開発版イメージですか?
さらに悪いことに、多くの人が最新のラベルが自動的に更新されると考えているようです。つまり、最新のラベルが付いたイメージを取得すると、Docker は実行前にそれが最新バージョンであるかどうかを確認することになります。これは決して起こりません。他のタグと同様に、Docker が最新バージョンのイメージを取得するかどうかを手動で決定する必要があります。
混乱はそれだけではありません。タグを指定せずにリポジトリからイメージを docker pull するとどうなりますか?すべての画像が取得されると思ったら大間違いで、最新のラベルが付いた画像のみが取得されます。すべてのイメージを取得する必要がある場合は、-a フラグを追加する必要があります。最新タグを使用せずにリソース ライブラリに対してプル操作を実行するとどうなりますか?次のように:### リーリー
予期せず、Docker からエラー メッセージが表示されました。しかし、何が起こっているのかあなたには分からないと思います。さらに厄介なことの 1 つは、latest タグが他のタグを隠してしまうということです。latest タグを含む Debian イメージをダウンロードするとします。どのバージョンですか?リーリー
うーん、分かりません。実際にはバージョン 7.8 wheezy です。
Docker はイメージをダウンロードするときにすべてのタグを付ける必要があると思いますが、なぜこれを行わないのかわかりません。ここで何が起こっているかというと、サーバー上でラベルが付けられているため、ユーザーは同じイメージの異なるバージョンを持つことができるということです。例: wheezy とlatest の両方がハブ上で更新され、更新された wheezy バージョンの debian のみを取得する場合、それらはハブ上で区別できますが、私の wheezy タグは最新タグのローカル バージョンよりも小さくなります。 。
上記では、最新のセマンティクスの大部分と、それが引き起こす一般的な誤解のみを取り上げています。この状況はどうすれば改善できるでしょうか?個人的には、最新のタグをキャンセルして、デフォルトなど、文字通りの意味に近い単語に置き換えることができると思います。また、画像のすべてのタグを同時に更新するなど、タグの作成方法を改善する取り組みも期待します。同時に、リポジトリ管理者には最新のタグに注意し、完全に放棄することを強くお勧めします。
以上がDocker における最新タグの役割は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。