はじめに
この実験では、docker scout watch コマンドを効果的に使用してコンテナイメージを監視する方法を学びます。具体的なリポジトリを対象に新しいイメージを監視するシナリオから始め、タグでフィルタリングすることで監視を絞り込みます。また、レジストリ内のすべてのリポジトリを対象に監視を拡張する方法や、リポジトリ内のすべての既存イメージを含む監視を開始する方法も学びます。実践的な演習を通じて、Docker Scout を使用したイメージ監視の設定と管理に関する実践的な経験を積むことができます。
特定のリポジトリを監視して新しいイメージを探す
このステップでは、docker pull コマンドを使用して特定の Docker リポジトリを対象に新しいイメージを監視する方法を学びます。これは Docker の基本的な操作であり、レジストリからローカルマシンにイメージをダウンロードすることができます。
まず、Docker Hub レジストリから特定のイメージを取得しましょう。ここでは、Docker インストールのテストに使用される非常に小さなイメージである hello-world イメージを使用します。
docker pull hello-world
イメージが取得されてダウンロードされていることを示す出力が表示されるはずです。
Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
このコマンドは、デフォルトのレジストリ (Docker Hub) から latest タグの hello-world イメージをダウンロードするよう Docker に指示します。イメージがすでにローカルに存在する場合、Docker は新しいバージョンが利用可能かどうかを確認し、必要に応じてダウンロードします。
次に、ローカルマシン上にあるイメージを一覧表示して、hello-world イメージがダウンロードされたことを確認しましょう。
docker images
出力に hello-world が表示されるはずです。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ...
このコマンドは、ローカルマシンに保存されているすべての Docker イメージのリストを表示します。リポジトリ、タグ、イメージ ID、作成日、およびサイズが含まれます。
では、同じイメージを再度取得してみましょう。すでに hello-world の latest バージョンを持っているため、Docker は再度ダウンロードしません。
docker pull hello-world
出力は、イメージが最新であることを示します。
Using default tag: latest
latest: Pulling from library/hello-world
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latest
これは、docker pull がダウンロードする前に新しいバージョンを確認する方法を示しています。
特定のリポジトリを監視し、タグでフィルタリングする
このステップでは、特定の Docker リポジトリを監視し、イメージを取得する際にタグでフィルタリングする方法を学びます。Docker イメージには、タグで識別される異なるバージョンやバリエーションがあることがよくあります。タグを指定することで、特定のバージョンのイメージを取得することができます。
前のステップでは、デフォルトの latest タグの hello-world イメージを取得しました。では、異なるイメージ、たとえば ubuntu イメージを取得し、特定のタグを指定してみましょう。ここでは、Ubuntu 20.04 LTS リリースに対応する 20.04 タグを持つイメージを取得します。
docker pull ubuntu:20.04
指定した Ubuntu イメージのタグのダウンロード進捗を示す出力が表示されます。
20.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04
このコマンドは、Docker に対して 20.04 タグの ubuntu イメージをダウンロードするよう指示します。タグを指定しない場合、Docker はデフォルトで latest を使用します。
では、ローカルのイメージを再度一覧表示して、新しくダウンロードした ubuntu:20.04 イメージを確認しましょう。
docker images
一覧には、hello-world:latest と ubuntu:20.04 の両方が表示されるはずです。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ...
ubuntu 20.04 ... ... ...
これは、タグを指定することで ubuntu イメージの特定のバージョンを正常に取得できたことを示しています。
同じイメージの他のタグも取得することができます。たとえば、ubuntu イメージの 18.04 タグを取得してみましょう。
docker pull ubuntu:18.04
再び、ダウンロード進捗が表示されます。
18.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04
イメージをもう一度一覧表示すると、取得した 3 つのイメージがすべて表示されます。
docker images
出力には、ubuntu:18.04 が含まれるようになります。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ...
ubuntu 20.04 ... ... ...
ubuntu 18.04 ... ... ...
これは、タグを使用してローカルマシン上の同じイメージの異なるバージョンを管理できることを示しています。
レジストリ内のすべてのリポジトリを監視する
このステップでは、Docker レジストリ内のリポジトリを一覧表示する方法を学びます。docker pull は個々のイメージを取得するために使用されますが、Docker Hub のようなパブリックレジストリ内の すべての リポジトリを Docker CLI から直接「監視」または一覧表示する単一のコマンドはありません。リポジトリの数が非常に多いためです。ただし、キーワードを基にリポジトリを検索することはできます。
docker search コマンドを使用すると、Docker Hub レジストリ内のイメージを検索できます。「nginx」に関連するイメージを検索してみましょう。
docker search nginx
検索語句「nginx」に一致するリポジトリのリストが表示されます。
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16000 [OK]
...
出力には、各一致するリポジトリに関する情報が提供されます。名前、説明、スターの数、公式イメージか自動ビルドかなどが含まれます。
検索結果をフィルタリングすることもできます。たとえば、「ubuntu」に関連する公式イメージのみを表示するには、--filter フラグを使用できます。
docker search --filter is-official=true ubuntu
このコマンドは、公式の Ubuntu リポジトリのみを表示します。
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based... 14000 [OK]
docker search は すべての リポジトリを一覧表示するわけではありませんが、Docker CLI を使用してレジストリ内のイメージを見つける主要な方法です。Docker Hub のような大規模なパブリックレジストリ内のリポジトリの包括的なリストを取得するには、通常、レジストリの API またはウェブインターフェイスを使用する必要があります。
この実験の目的上、イメージを検索して見つける方法を理解することは、「監視」したいまたはイメージを取得したいリポジトリを見つけるための重要なポイントです。
リポジトリを監視し、すべての既存イメージをプッシュする
このステップでは、既存のイメージにタグを付けて Docker レジストリにプッシュする方法を学びます。イメージをプッシュすることで、独自のカスタムイメージや既存イメージの修正版を他の人と共有したり、リモートの場所に保存したりすることができます。
イメージをプッシュする前に、レジストリアドレス、ユーザー名、リポジトリ名を使ってイメージにタグを付ける必要があります。前のステップで取得した ubuntu:20.04 イメージを使用します。このイメージにタグを付けて Docker Hub にプッシュしましょう。your_docker_username を実際の Docker Hub ユーザー名に置き換えてください。
docker tag ubuntu:20.04 your_docker_username/ubuntu:20.04
このコマンドは、ubuntu:20.04 イメージに新しいタグを作成します。新しいタグは your_docker_username/ubuntu:20.04 です。形式は [registry]/[username]/[repository]:[tag] です。Docker Hub にプッシュする場合は、レジストリ部分 (docker.io/) を省略できます。
では、ローカルのイメージを再度一覧表示して、新しいタグを確認しましょう。
docker images
リポジトリが your_docker_username/ubuntu、タグが 20.04 のエントリが表示され、元の ubuntu:20.04 イメージと同じイメージ ID を共有しているはずです。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ...
ubuntu 20.04 ... ... ...
ubuntu 18.04 ... ... ...
your_docker_username/ubuntu 20.04 ... ... ...
イメージに正しくタグが付けられたら、Docker Hub のリポジトリにプッシュできます。注意: イメージをプッシュするには、Docker Hub にログインしている必要があります。ログインしていない場合、docker push コマンドは失敗します。この実験の目的上、コマンドをデモンストレーションしますが、Docker Hub アカウントを持ち、ログインしていない限り、イメージを正常にプッシュする必要はありません。
docker push your_docker_username/ubuntu:20.04
ログインしている場合、レジストリにプッシュされるレイヤーを示す出力が表示されます。ログインしていない場合、認証エラーが表示されます。
The push refers to repository [docker.io/your_docker_username/ubuntu]
...
このコマンドは、指定されたタグのイメージを Docker Hub のリポジトリにアップロードします。
単一のコマンドでリポジトリを「監視」し、すべての既存イメージを自動的にプッシュすることはできませんが、プッシュしたいイメージに対して docker tag と docker push コマンドをスクリプト化することで、これを実現することができます。
まとめ
この実験では、レジストリからコンテナイメージをダウンロードする基本的な docker pull コマンドを学びました。具体的には、hello-world のような特定のイメージを取得し、docker images を使用してその存在を確認する方法を実演しました。また、Docker が同じイメージに対するその後の取得要求を効率的に処理し、新しいバージョンが利用可能な場合のみダウンロードする仕組みを確認しました。



