このガイドでは、ゼロから Docker Hardened Image(DHI)を実行するまでの手順を、実例を用いて解説します。ここでは特定のイメージを例にしていますが、紹介する手順はどの DHI に対しても同様に適用できます。
ヒント
Bitnami のパブリック カタログ イメージなど、Docker Hub 上の他のイメージから DHI に移行する際も、現在使用しているツールやワークフローをそのまま利用できます。なお、Bitnami (英語) は 2025 年 9 月 29 日以降、パブリック カタログ イメージの提供を終了すると発表しています。多くの場合、移行は設定やコマンド内のイメージ参照を更新するだけで完了します。まずは本ガイドを確認し、そのうえで移行ガイド (英語) ではより詳細な手順や具体例を紹介しています。
このガイドの内容は 2025年 11月時点の情報に基づいています。最新情報については、エクセルソフト株式会社までお問い合わせください。
サブスクリプションがなくても Docker Hardened Images カタログを閲覧できますが、実際にイメージを利用するには、Docker Hardened Images を購入するか、組織向けの無料トライアルを利用する必要があります。本ガイドでは、無料トライアルの開始手順を説明します。
無料トライアルを開始するには:
Docker Hub の Hardened Images カタログにアクセスし、サインインします。
Start trial を選択し、画面の指示に従って進めます。
Docker Hub の Hardened Images カタログにアクセスし、サインインします。
左側のサイドバーで、DHI にアクセスできる組織を選択します。
同じく左側のサイドバーから Hardened Images > Catalog を選択します。
検索バーやフィルターを使って、利用したいイメージ (例:python、node、golang) を探します。本ガイドでは例として Python イメージを使用します。
Python リポジトリを選択して詳細を確認します。
次のステップでは、このイメージをミラーリングします。イメージの詳細な確認方法については、Docker Hardened Images の探索 (英語) を参照してください。
Docker Hardened Image を利用するには、まず組織にミラーリングする必要があります。この操作は組織のオーナーのみ実行可能です。ミラーリングを行うと、組織の名前空間内にイメージのコピーが作成され、チーム メンバーがプルして使用できるようになります。
イメージのリポジトリ ページで Mirror to repository を選択します。
注意
もし Mirror to repository ボタンが表示されない場合、すでにそのリポジトリが組織にミラーリングされている可能性があります。その場合は View in repository を選択して、ミラーリングされたイメージの場所を確認するか、別のリポジトリにミラーリングすることができます。
画面の指示に従ってリポジトリをミラーリングします。
すべてのタグがミラーリングされるまでに数分かかる場合があります。ミラーリングが完了すると、イメージ リポジトリは組織の名前空間に表示されます。たとえば Docker Hub では、My Hub > YOUR_ORG > Repositories に移動すると、dhi-python が一覧に表示されます。これで、他のイメージと同じようにプルして使用できるようになります。
次のステップでは、イメージをプルして実行します。イメージのミラーリングについてさらに詳しく知りたい場合は、Docker Hardened Image リポジトリのミラーリング (英語) を参照してください。
イメージを組織にミラーリングしたら、他の Docker イメージと同じようにプルして実行できます。なお、Docker Hardened Images は最小限かつセキュアに設計されているため、通常のイメージに含まれるすべてのツールやライブラリが含まれていない場合があります。一般的な違いについては DHI を導入する際の注意点 (英語) を参照してください。
以下の例では、Python イメージを実行し、他の Docker イメージと同じように簡単な Python コマンドを実行できることを示しています。
まず、ミラーリングしたイメージをプルします。ターミナルを開き、以下のコマンドを実行してください。<your-namespace> は組織の名前空間に置き換えます。
$ docker pull <your-namespace>/dhi-python:3.13
イメージを実行して、正しく動作することを確認します。
$ docker run --rm <your-namespace>/dhi-python:3.13 python -c "print('Hello from DHI')"
これにより、dhi-python:3.13 イメージからコンテナーが起動し、Hello from DHI と表示する簡単な Python スクリプトが実行されます。
イメージの利用方法についてさらに詳しく知りたい場合は、以下を参照してください。
Kubernetes デプロイでの使用 (英語)
Helm チャートを使ったデプロイ (英語)
DHIs を他のイメージと比較することで、セキュリティの向上点や違いを素早く確認できます。この比較により、ハードニング済みイメージを使用する価値を理解することができます。
以下のコマンドを実行して、要約比較を確認してください。<your-namespace> は組織の名前空間に置き換えます。
docker scout compare <your-namespace>/dhi-python:3.13 \
--to python:3.13 \
--platform linux/amd64 \
--ignore-unchanged \
2>/dev/null | sed -n '/## Overview/,/^ ## /p' | head -n -1
出力例:
## Overview
│ Analyzed Image │ Comparison Image
────────────────────┼───────────────────────────────────────────────────────│────────────────────────────────────────────────
Target │ docker/dhi-python:3.13 │ python:3.13
digest │ c215e9da9f84 │ 7f48e892134c
tag │ 3.13 │ 3.13
platform │ linux/amd64 │ linux/amd64
provenance │ https://github.com/docker-hardened-images/definitions │ https://github.com/docker-library/python.git
│ 77a629b3d0db035700206c2a4e7ed904e5902ea8 │ 3f2d7e4c339ab883455b81a873519f1d0f2cd80a
vulnerabilities │ 0C 0H 0M 0L │ 0C 1H 5M 141L 2?
│ -1 -5 -141 -2 │
size │ 35 MB (-377 MB) │ 412 MB
packages │ 80 (-530) │ 610
│ │
この比較から、Docker Hardened Image は以下の点で優れていることがわかります。
イメージ比較の詳細については Docker Hardened Images の比較 (英語) を参照してください。
最初の Docker Hardened Image をプルして実行できました。次のステップは以下のように進められます。