コンテナイメージに含まれるパッケージの脆弱性を見逃すと、本番環境での情報漏洩やサービス停止につながりかねません。Docker Scoutは、Dockerワークフローにネイティブ統合された脆弱性管理ツールで、イメージ内の全パッケージを可視化し、既知のCVEを検出・優先順位付けする機能を備えています。
Docker Scoutの概要 — 何ができるツールなのか
Docker Scoutは、Docker社が提供するソフトウェアサプライチェーンセキュリティツールです。コンテナイメージのSBOM(Software Bill of Materials)を自動生成し、23の脆弱性データベースと照合することで、イメージ内のセキュリティリスクを検出します。
従来のDockerでは脆弱性スキャンにSnykベースのdocker scanコマンドが使われていましたが、APIレート制限(月100回まで)やDocker外部サービスへの依存が課題でした。2023年にDocker Scoutがこれを置き換え、Docker Desktop・Docker Hub・CLIにネイティブ統合されたことで、追加のアカウント登録やAPIキー取得なしに脆弱性スキャンを実行できるようになっています。
Docker Scoutの主な機能は以下の5つです。
| 機能 | 概要 |
|---|---|
| 脆弱性スキャン | イメージ内パッケージのCVEを検出し、重大度別に分類 |
| SBOM生成 | SPDX形式でソフトウェア部品表を出力 |
| ポリシー評価 | 9種類のセキュリティポリシーへの準拠状況を自動判定 |
| Health Score | イメージのセキュリティ品質をA〜Fの6段階で評価 |
| 修正提案 | ベースイメージの更新やパッケージアップグレードを具体的に提示 |
脆弱性データベースの仕組み
Docker Scoutは単一のデータベースに依存せず、NVD(National Vulnerability Database)、GitHub Advisory Database、各Linuxディストリビューションのセキュリティトラッカーなど、23のデータソースを集約しています(出典: Docker Docs)。
マッチング方式にはPackage URLs(PURLs)を採用しており、従来のCPE(Common Platform Enumeration)方式と比べて誤検知が少ない点が特徴です。また、CVSSスコアはv4を優先し、ベンダー固有のアドバイザリがNISTスコアリングより優先される設計になっています。
Docker Scoutの導入手順
Docker Scoutの利用方法は環境に応じて3つあります。
Docker Desktop経由(最も手軽)
Docker Desktop 4.17以降にはDocker Scout CLIがプリインストールされています。Docker Desktopをインストール済みであれば追加の設定なしにすぐ利用可能です。
# バージョン確認
docker scout version
CLIプラグインの手動インストール
Docker Desktopを使わない環境(CI/CDサーバーやLinuxサーバーなど)では、インストールスクリプトで導入します。
# インストールスクリプトの実行
curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh -o install-scout.sh
sh install-scout.sh
OS別の手動インストールも可能です。
Linux(x86_64)の場合:
# 最新バージョンを取得してインストール
mkdir -p $HOME/.docker/cli-plugins
curl -fsSL https://github.com/docker/scout-cli/releases/latest/download/docker-scout_linux_amd64.tar.gz \
| tar -xzf - -C $HOME/.docker/cli-plugins
chmod +x $HOME/.docker/cli-plugins/docker-scout
macOS(Apple Silicon)の場合:
mkdir -p $HOME/.docker/cli-plugins
curl -fsSL https://github.com/docker/scout-cli/releases/latest/download/docker-scout_darwin_arm64.tar.gz \
| tar -xzf - -C $HOME/.docker/cli-plugins
chmod +x $HOME/.docker/cli-plugins/docker-scout
GitHub Actionsでの利用
CI/CDパイプラインではDocker公式のGitHub Actionが利用できます。詳細は後述の「CI/CDパイプラインとの統合」セクションで解説します。
CLIコマンドの実践ガイド
Docker Scout CLIには用途別のサブコマンドが用意されています。ここでは実務で頻繁に使う5つのコマンドを具体的な実行例とともに紹介します。
docker scout quickview — イメージの概要を素早く把握
quickviewはイメージの脆弱性サマリーを一覧表示するコマンドです。詳細な分析の前にまず全体像を確認する用途に適しています。
docker scout quickview myapp:latest
出力例:

C(Critical)、H(High)、M(Medium)、L(Low)の4段階で脆弱性が表示されます。Base imageの行を見ることで、自分のアプリケーションコードが追加した脆弱性と、ベースイメージ由来の脆弱性を区別できます。
docker scout cves — CVEの詳細一覧を取得
cvesは検出されたCVEの詳細を一覧表示するコマンドです。
# 全CVEを表示
docker scout cves myapp:latest
# Critical/Highのみ表示
docker scout cves myapp:latest --only-severity critical,high
# CIで使用(Critical/Highがある場合に終了コード1を返す)
docker scout cves myapp:latest --exit-code --only-severity critical,high
出力にはCVE ID、CVSSスコア、影響を受けるパッケージ名、修正済みバージョンが含まれます。--exit-codeフラグを付けるとCI/CDパイプラインで脆弱性検出時にビルドを自動的に失敗させることが可能です。
docker scout sbom — SBOM(ソフトウェア部品表)の生成
SBOM(Software Bill of Materials)は、イメージに含まれる全パッケージとその依存関係を一覧化したドキュメントです。経済産業省も「ソフトウェア管理に向けたSBOMの導入に関する手引」を公開しており、サプライチェーンセキュリティの観点で重要性が高まっています。
# SPDX形式でSBOMを生成
docker scout sbom --format spdx myapp:latest
# 人間が読みやすいリスト形式で表示
docker scout sbom --format list myapp:latest
# ファイルに出力
docker scout sbom --format spdx myapp:latest > sbom.spdx.json
ビルド時にSBOMをイメージに直接埋め込むことも可能です。
docker build --tag myorg/myapp:latest \
--attest type=sbom,generator=docker/scout-sbom-indexer:latest \
--push .
この方法で生成したSBOMはDocker Scout以外のツール(OSV Scanner、Grypeなど)でも利用でき、脆弱性情報の二次的な分析に活用できます。
docker scout recommendations — 修正提案の取得
recommendationsはベースイメージの更新提案を提示するコマンドです。単に「脆弱性がある」と報告するだけでなく、具体的にどのタグに変更すべきかを示します。
docker scout recommendations myapp:latest
出力例:

「Refresh base image」は同じタグの最新ダイジェストへの更新、「Change base image」は別のベースイメージへの切り替えを提案します。修正による脆弱性削減数とイメージサイズの変化が具体的に表示されるため、対応の優先順位付けに役立ちます。
docker scout compare — イメージ間の差分比較
compareは2つのイメージのセキュリティ状態を比較するコマンドです。PRブランチのビルドとメインブランチのビルドを比較し、新たに導入された脆弱性を検出する用途に最適です。
# featureブランチのイメージとmainブランチのイメージを比較
docker scout compare myorg/myapp:feature-branch \
--to myorg/myapp:latest \
--only-severity critical,high \
--ignore-unchanged
--exit-on vulnerability,policyフラグを付けると、新規脆弱性やポリシー違反が検出された場合にのみビルドを失敗させることが可能です。既存の脆弱性(両方のイメージに共通するもの)は無視し、回帰(デグレ)のみを検出するため、CIパイプラインに組み込む際のノイズが大幅に減ります。
CI/CDパイプラインとの統合
Docker Scoutをローカル環境だけでなくCI/CDパイプラインに組み込むことで、プルリクエストやデプロイのタイミングで自動的にセキュリティチェックを実行できます。
GitHub Actionsとの統合
Docker公式のdocker/scout-actionを使った統合例です。
name: Docker Scout Scan
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
scout:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/myapp:${{ github.sha }}
# PRの場合: 既存イメージとの差分比較
- uses: docker/scout-action@v1
if: github.event_name == 'pull_request'
with:
command: compare
image: ${{ secrets.DOCKER_USERNAME }}/myapp:${{ github.sha }}
to: ${{ secrets.DOCKER_USERNAME }}/myapp:latest
only-severities: critical,high
exit-code: true
# mainブランチの場合: フルスキャン
- uses: docker/scout-action@v1
if: github.ref == 'refs/heads/main'
with:
command: cves
image: ${{ secrets.DOCKER_USERNAME }}/myapp:${{ github.sha }}
only-severities: critical,high
exit-code: true
PRではcompareコマンドによる差分比較、mainブランチではcvesコマンドによるフルスキャンという使い分けがポイントです。docker/scout-actionはスキャン結果をPRコメントとして自動投稿する機能も備えており、レビュアーがPR画面上でセキュリティ状態を確認できます。
GitLab CIとの統合
docker-build:
image: docker:latest
services:
- docker:dind
variables:
DOCKER_TLS_CERTDIR: "/certs"
script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"
# Docker Scoutのインストールと実行
- |
curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh
if [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then
docker scout cves "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" \
--exit-code --only-severity critical,high
else
docker scout compare "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" \
--to "$CI_REGISTRY_IMAGE:latest" \
--exit-on vulnerability,policy \
--only-severity critical,high \
--ignore-unchanged
fi
デフォルトブランチではフルスキャン、フィーチャーブランチではcompareによる差分比較という分岐パターンはGitHub Actionsと同じ考え方です。
その他のCI/CDプラットフォーム
Docker Scoutは以下のプラットフォームにも対応しています。
| プラットフォーム | 統合方法 |
|---|---|
| CircleCI | Remote Dockerセットアップ + CLI実行 |
| Jenkins | Jenkinsfileのstage定義でCLI実行 |
| Azure DevOps | CmdLineタスクでCLI実行 |
| Bitbucket Pipelines | Dockerサービスコンテナ + CLI実行 |
いずれもDocker Scout CLIのインストールとDocker Hub認証の設定が共通の前提です。
ポリシー評価機能 — 組織のセキュリティ基準を自動チェック
Docker Scoutのポリシー評価は、個別のCVE検出だけでは対応しきれない「組織としてのセキュリティ基準」を自動的に判定する機能です。2024年10月にGeneral Availabilityとなり、全プランで利用可能になりました。
9種類のビルトインポリシー
| ポリシー | 判定内容 | 活用場面 |
|---|---|---|
| Severity-Based Vulnerability | Critical/Highの既知CVE有無 | 基本的な脆弱性チェック |
| High-Profile Vulnerabilities | Log4Shell・Heartbleedなど重大脆弱性 | 業界で話題の脆弱性への即時対応 |
| Compliant Licenses | GPLなどコピーレフトライセンスの有無 | ライセンスコンプライアンス |
| Up-to-Date Base Images | ベースイメージが最新か | イメージの鮮度管理 |
| Supply Chain Attestations | SBOMとProvenance証明の有無 | サプライチェーン透明性 |
| Default Non-Root User | rootユーザーで実行されていないか | 最小権限の原則 |
| Approved Base Images | 承認済みベースイメージの使用 | 組織のイメージポリシー |
| SonarQube Quality Gates | コード品質スキャンの結果 | 品質ゲート連携 |
| Valid Docker Hardened Image | DHIまたはDHIベースであるか | 強化イメージの利用推進 |
「High-Profile Vulnerabilities」ポリシーではCISA KEV(Known Exploited Vulnerabilities)カタログの追跡も有効化できるため、米国政府機関が実際に悪用を確認した脆弱性を自動検出する運用が可能です。
ポリシーの実行はCLIからも可能です。
# 全ポリシーの評価結果を表示
docker scout policy myorg/myapp:latest
# CI/CDでポリシー違反がある場合にビルドを失敗させる
docker scout policy myorg/myapp:latest --exit-code
VEXによる例外管理
実務では「脆弱性として検出されるが、自社の利用方法では悪用不可能」というケースがあります。Docker ScoutはVEX(Vulnerability Exploitability eXchange)ドキュメントによる例外管理に対応しており、誤検知や対応不要なCVEを正式に記録・抑制できます。
- Docker Scout DashboardまたはDocker DesktopのGUIから例外を作成可能
docker scout cves実行時に抑制されたCVEには「SUPPRESSED」ラベルが表示--ignore-suppressedフラグで出力から除外可能
Health Score — イメージの安全性をA〜Fで可視化
Health ScoreはDocker Hubのリポジトリ内イメージに対するセキュリティ総合評価スコアです。単純なCVE件数ではなく、複数のポリシー準拠状況を加味した複合指標として設計されています。
グレーディング基準
| 達成率 | グレード |
|---|---|
| 90%以上 | A |
| 71〜90% | B |
| 51〜70% | C |
| 31〜50% | D |
| 11〜30% | E |
| 10%未満 | F |
スコアの配点構成
各ポリシーには重み付けが設定されており、準拠したポリシーのポイント合計から達成率を算出します。
| ポリシー | 配点 |
|---|---|
| Severity-Based Vulnerability | 20点 |
| High-Profile Vulnerabilities | 20点 |
| Supply Chain Attestations | 15点 |
| Approved Base Images | 15点 |
| Up-to-Date Base Images | 10点 |
| SonarQube Quality Gates | 10点(オプション) |
| Default Non-Root User | 5点 |
| Compliant Licenses | 5点 |
| 合計 | 100点 |
脆弱性関連の2ポリシーが計40点を占めるため、CVE対応がスコアに最も大きく影響します。一方、Supply Chain AttestationsやApproved Base Imagesも計30点あるため、SBOMの添付やベースイメージの管理も無視できない配点です。
Health Scoreは圧縮サイズが4GBを超えるイメージや、linux/amd64・linux/arm64以外のアーキテクチャでは算出されません(出典: Docker Docs)。
料金プランと機能範囲
Docker Scoutは2024年12月のプラン改定により、全てのDockerサブスクリプションに統合されました。個別のScout専用プランは廃止され、Dockerサブスクリプションに含まれる形に変更されています(出典: Docker Blog)。
| 項目 | Personal(無料) | Pro | Team | Business |
|---|---|---|---|---|
| 月額 | $0 | $9 | $15/ユーザー | $24/ユーザー |
| ローカルイメージ分析 | 無制限 | 無制限 | 無制限 | 無制限 |
| リモートリポジトリ監視 | 1 | 2 | 無制限 | 無制限 |
| 継続的脆弱性分析 | - | - | 無制限 | 無制限 |
| ポリシー評価 | ○ | ○ | ○ | ○ |
| Health Score | ○ | ○ | ○ | ○ |
| SBOM生成 | ○ | ○ | ○ | ○ |
ローカルでのイメージスキャンは全プランで無制限に実行できます。無料プランでもCLIの主要機能(cves、sbom、quickview、recommendations)は利用可能なため、個人開発や小規模プロジェクトではPersonalプランで十分対応できます。
チームでの本格運用にはTeamプラン以上が適しています。リモートリポジトリの監視数が無制限になるほか、継続的脆弱性分析(イメージをプッシュするたびに自動スキャン)が利用可能です。
Docker Scout・Trivy・Grype・Snykの比較
Docker Scout以外にもコンテナイメージの脆弱性スキャンツールは複数存在します。代表的な4ツールの特徴を比較します。
| 比較項目 | Docker Scout | Trivy | Grype | Snyk |
|---|---|---|---|---|
| 開発元 | Docker | Aqua Security | Anchore | Snyk |
| ライセンス | Dockerサブスクに統合 | OSS (Apache 2.0) | OSS (Apache 2.0) | フリーミアム |
| コンテナイメージスキャン | ○ | ○ | ○ | ○ |
| ファイルシステムスキャン | - | ○ | ○ | ○ |
| IaCスキャン | - | ○ | - | ○ |
| ポリシー評価 | ○(9種類) | - | - | ○ |
| Health Score | ○ | - | - | - |
| SBOM生成 | ○(SPDX) | ○(SPDX / CycloneDX) | -(Syftと併用) | ○ |
| Docker Hub統合 | ネイティブ | - | - | - |
| オフライン実行 | 不可 | ○ | ○ | 制限あり |
| Fix PR自動作成 | - | - | - | ○ |
| シークレット検出 | - | ○ | - | ○ |
ツール選定の指針
Docker Scoutが適するケース: Docker Desktop・Docker Hubを中心としたワークフローで運用しており、ポリシー評価やHealth Scoreによる組織的なセキュリティ管理を行いたい場合。追加のツールインストールや認証設定が不要な点もメリットです。
Trivyが適するケース: ベンダーロックインを避けたい場合や、コンテナイメージだけでなくIaC(Terraform、Kubernetes manifests)やファイルシステムもスキャンしたい場合。エアギャップ環境でも利用可能です。
Grypeが適するケース: CI/CDパイプラインに軽量なスキャナーを組み込みたい場合。サーバー不要で単一バイナリとして動作し、SyftでSBOM生成→Grypeで脆弱性検出という組み合わせが可能です。
Snykが適するケース: コンテナだけでなくアプリケーションコードやIaCも統合的にスキャンし、Fix PRの自動作成まで行いたい場合。IDE統合が充実しており、開発者が日常的にセキュリティを意識するワークフローを構築できます。
米国のセキュリティコミュニティでは、異なるデータベースを持つ2ツールを併用してカバー率を高める運用が推奨されています。例えばDocker Scout + Trivyの併用により、Docker Scoutの24データソースとTrivyのNVD・GitHub Advisory等のカバレッジを補完し合う構成が取れます。
Docker Hardened Imagesとの連携
Docker Hardened Images(DHI)は、Docker社が提供するセキュリティ強化済みのコンテナイメージです。2025年12月にApache 2.0ライセンスで無料・オープンソース化され、1,000以上のイメージとHelmチャートが利用可能になりました(出典: Docker Press Release)。
DHIの主な特徴
| 特徴 | 内容 |
|---|---|
| 攻撃対象面の削減 | 従来イメージ比で最大95%削減 |
| CVEパッチ速度 | 24時間以内に修正版を提供 |
| デフォルト非root実行 | 最小権限の原則を標準適用 |
| SLSA Build Level 3 | ビルドの暗号学的な真正性証明 |
| VEXアテステーション同梱 | 文脈上悪用不可能なCVEを自動抑制 |
Docker Scoutとの統合ポイント
Docker Scoutの「Valid Docker Hardened Image」ポリシーを有効にすると、イメージがDHIまたはDHIベースで構築されているかを自動検証します。DHIに同梱されるVEXアテステーションはDocker Scoutが自動的に読み取り、悪用不可能と判断されたCVEをスキャン結果から抑制するため、対応が必要な脆弱性だけに集中できます。
DHIのCVEパッチは以下のフローで24時間以内に配信されます。
新規CVE開示 → Scout Real-Time CVE Ingestion で検知
→ 自動リビルドトリガー
→ SBOMで影響コンポーネント特定
→ パッチ適用・テスト
→ 更新イメージ配信(24時間以内)
従来のベースイメージ(Debian公式、Ubuntu公式など)ではCVEの修正に数日〜数週間かかることもあるため、セキュリティ要件の厳しいプロジェクトではDHIの採用が有効な選択肢です。
Docker Scout運用のベストプラクティス
開発フェーズ別のスキャン戦略
Docker Scoutの効果を最大化するには、開発ライフサイクルの各フェーズで適切なスキャンを実行する「シフトレフト」アプローチが有効です。
graph LR
A[ローカル開発] -->|docker scout quickview| B[PR作成]
B -->|docker scout compare| C[マージ]
C -->|docker scout cves + policy| D[デプロイ]
D -->|ダッシュボード監視| E[運用]
| フェーズ | 推奨コマンド | 目的 |
|---|---|---|
| ローカル開発 | quickview / recommendations | 早期のリスク把握とベースイメージ選定 |
| PR作成時 | compare --to latest | 新規導入された脆弱性の差分検出 |
| マージ後 | cves --exit-code + policy | フルスキャンとポリシー準拠の確認 |
| 運用中 | ダッシュボード + Prometheusエクスポーター | 継続的なモニタリング |
ベースイメージの選定と更新
脆弱性の多くはベースイメージに起因します。以下の指針でベースイメージを管理します。
- slimまたはalpineバリアントを優先: 不要なパッケージが少ないほど攻撃対象面が縮小
- 月次でベースイメージを更新:
docker scout recommendationsで最新の推奨タグを確認 - Docker Hardened Imagesの検討: セキュリティ要件が厳しい場合はDHIへの移行で95%の攻撃対象面削減が可能
Prometheusによるメトリクス監視
Docker ScoutのPrometheusメトリクスエクスポーターを利用すると、Grafanaダッシュボードで脆弱性数やポリシー準拠状況を時系列で可視化できます。
エンドポイント: /v1/exporter/org/<ORG>/metrics
認証にはDocker Hub Personal Access Token(PAT)を使用します。Docker社がスターターテンプレートのDocker Composeファイルを提供しているため、Prometheus + Grafanaの環境構築は比較的容易です(出典: Docker Docs)。
レジストリ統合
Docker Hub以外のコンテナレジストリとも統合可能です。
- Amazon ECR: Docker Scout DashboardからECRレジストリを接続
- JFrog Artifactory: Artifactoryのイメージを直接参照してスキャン
- Azure Container Registry: ACRとの統合設定が可能
まとめ
Docker Scoutは脆弱性スキャンにとどまらず、SBOM生成・ポリシー評価・Health Score・修正提案までを一貫して提供するセキュリティプラットフォームです。Docker Desktop・Docker Hub・CLIにネイティブ統合されているため、既存のDockerワークフローに追加の学習コストなく組み込めます。
無料のPersonalプランでもローカルスキャンは無制限に利用できるため、まずはdocker scout quickviewでプロジェクトのイメージをスキャンし、脆弱性の全体像を把握するところから始めるのが効果的です。CI/CDパイプラインへの統合は、GitHub Actionsのdocker/scout-actionを使えば数行のYAML追加で実現できます。
チームでの本格運用では、ポリシー評価によるセキュリティ基準の自動チェックと、Health Scoreによるイメージ品質の可視化が効果を発揮します。Trivy・Grypeなどの代替ツールとの併用でカバー率を高める運用も選択肢の一つです。
