はじめに
この実験では、docker scout push コマンドを使用して Docker イメージを Docker Scout にプッシュする方法を学びます。Docker Scout は、コンテナイメージのセキュリティ状態を理解し、改善するのに役立つサービスです。
デフォルトの Docker Scout 組織にイメージをプッシュする方法、--org フラグを使用して特定の組織にイメージをプッシュする方法、ソフトウェアマテリアルリスト (Software Bill of Materials, SBOM) を生成しながらイメージをプッシュする方法、および実際にイメージをプッシュせずにプッシュ操作のドライランを実行して何が起こるかを確認する方法を探索します。
Docker Scout にイメージをプッシュする
このステップでは、Docker イメージを Docker Scout にプッシュする方法を学びます。Docker Scout は、コンテナイメージのセキュリティ状態を理解し、改善するのに役立つサービスです。イメージをプッシュする前に、ローカルで Docker イメージをビルドまたは取得しておく必要があります。
まず、このステップで使用するサンプルイメージを取得しましょう。Docker Hub の 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 Scout にプッシュすることができます。これを行うには、docker scout push コマンドの後にイメージ名とタグを指定します。
docker scout push hello-world:latest
これと似たような出力が表示され、イメージがプッシュされ、Docker Scout によって分析されていることが示されるはずです。
Analyzing image hello-world:latest...
...
Image hello-world:latest pushed to Docker Scout.
このコマンドは、hello-world:latest イメージをデフォルトの Docker Scout 組織にプッシュします。その後、Docker Scout はイメージの脆弱性やその他のセキュリティ問題を分析します。
Docker Scout の特定の組織にイメージをプッシュする
このステップでは、Docker Scout 内の特定の組織に Docker イメージをプッシュする方法を学びます。複数の組織に所属している場合や、Docker Scout 内で異なる組織構造の下にイメージを分類したい場合に便利です。
特定の組織にイメージをプッシュするには、--org フラグの後に組織名を指定します。再び hello-world:latest イメージを使用し、架空の組織 my-org にプッシュしましょう。注意: 実際に使用する組織名がある場合は、my-org をその組織名に置き換えてください。この実験では、例として my-org を使用します。
docker scout push hello-world:latest --org my-org
前のステップと似たような出力が表示されますが、今回は指定した組織にイメージがプッシュされていることが示されます。
Analyzing image hello-world:latest...
...
Image hello-world:latest pushed to Docker Scout organization my-org.
このコマンドは、Docker Scout に hello-world:latest イメージを my-org 組織に関連付けるよう指示します。これにより、特定のチームやプロジェクトのコンテキスト内でイメージを管理および表示するのに役立ちます。
イメージをプッシュして SBOM を生成する
このステップでは、Docker イメージを Docker Scout にプッシュすると同時に、そのイメージのソフトウェア材料表 (Software Bill of Materials, SBOM) を生成する方法を学びます。SBOM は、ソフトウェアコンポーネントを構成する要素の正式なリストです。ソフトウェアのセキュリティとライセンスを理解するための重要なツールです。
イメージをプッシュする際に SBOM を生成するには、docker scout push コマンドに --sbom フラグを使用します。再び hello-world:latest イメージを使用し、SBOM を生成しながらプッシュしましょう。
docker scout push hello-world:latest --sbom
イメージが分析され、SBOM が生成されてイメージとともにプッシュされていることを示す出力が表示されるはずです。
Analyzing image hello-world:latest...
Generating SBOM for hello-world:latest...
...
Image hello-world:latest pushed to Docker Scout with SBOM.
--sbom フラグは、Docker Scout に対して、プッシュプロセス中にイメージの SBOM を作成するよう指示します。この SBOM は、Docker Scout 内でイメージに関連付けられ、イメージ内のコンポーネントに関する詳細情報を提供します。
ドライランでイメージをプッシュする
このステップでは、Docker イメージを Docker Scout にプッシュする際に「ドライラン」を実行する方法を学びます。ドライランを行うことで、実際にプッシュ操作を行わずに、イメージをプッシュした場合に何が起こるかを確認できます。これは、コマンドをテストし、実際のプッシュを行う前に正しく設定されていることを確認するのに役立ちます。
ドライランを実行するには、docker scout push コマンドに --dry-run フラグを使用します。再び hello-world:latest イメージを使用し、プッシュ操作のドライランを実行しましょう。
docker scout push hello-world:latest --dry-run
コマンドがプッシュ操作をシミュレートしていることを示す出力が表示されるはずです。イメージの分析や SBOM の生成など、実行される手順が表示されますが、実際にはイメージを Docker Scout にアップロードすることはありません。
Analyzing image hello-world:latest...
Dry run: Image hello-world:latest would be pushed to Docker Scout.
--dry-run フラグは、Docker Scout リポジトリに影響を与えることなく、docker scout push コマンドとそのオプションを検証する安全な方法です。
まとめ
この実験では、セキュリティ分析のために Docker イメージを Docker Scout にプッシュするために docker scout push コマンドを使用する方法を学びました。まずサンプルイメージを取得し、それをデフォルトの Docker Scout 組織に正常にプッシュしました。
さらに、--org フラグを使用して Docker Scout 内の特定の組織にイメージをプッシュする方法を調べました。これにより、異なる組織構造でイメージを管理する際のこのコマンドの柔軟性を実証しました。



