1. Dockerレジストリの基礎知識と効率的なイメージ管理入門
    1. Dockerレジストリとは?その役割と重要性
    2. なぜ今、セキュリティが最優先されるのか
    3. 効率的なイメージ管理の基本とベストプラクティス
  2. Dockerレジストリへのログインとイメージ操作の基本手順
    1. レジストリへの安全なログイン方法
    2. イメージのプッシュとプル実践ガイド
    3. イメージタグの命名規則とバージョン管理のポイント
  3. ローカルレジストリ構築とGitサービス連携の実践例
    1. ローカル環境でのレジストリ構築手順
    2. GitサービスとCI/CD連携の基本概念
    3. 自動化されたイメージ管理ワークフローの実装例
  4. イメージ運用で陥りやすいトラブルと回避策
    1. イメージサイズ肥大化による問題と解決策
    2. セキュリティ脆弱性への対策と最新情報のキャッチアップ
    3. アクセス制御の不備と情報流出の防止策
  5. 【ケース】不要なイメージが原因でビルドが遅延した改善事例
    1. 課題:ビルド時間とディスク容量の増大
    2. 原因分析と具体的な改善アプローチ
    3. 改善結果と持続的な運用への提言
  6. まとめ
  7. よくある質問
    1. Q: Dockerレジストリとリポジトリの違いは何ですか?
    2. Q: Dockerレジストリに安全にログインする方法は?
    3. Q: 不要なDockerイメージを効率的に削除するには?
    4. Q: ローカルにDockerレジストリを構築するメリットは?
    5. Q: GitサービスとDockerレジストリを連携させる利点は?

Dockerレジストリの基礎知識と効率的なイメージ管理入門

Dockerレジストリとは?その役割と重要性

Dockerレジストリは、コンテナイメージを一元的に保存、共有、配布するためのハブです。開発者が作成したコンテナイメージをアップロード(プッシュ)し、他の環境でダウンロード(プル)して利用できます。これにより、開発環境の統一や、CI/CDパイプラインとの連携による開発・運用プロセスの自動化が効率的に進められます。レジストリは、大枠の「レジストリ」の中に、関連するイメージの集合体である「リポジトリ」があり、その中に個々の「イメージ」が格納される階層構造を持っています。この効率的なイメージ管理は、現代の開発現場では不可欠なインフラストラクチャと言えるでしょう。実際に、2024年現在、日本国内の開発プロジェクトの約60%以上がコンテナ技術を採用しているとされており、今後もその採用率は高まる傾向にあります。

IT人材の需給ギャップが拡大している現状において、Dockerやコンテナ技術の習得、そしてレジストリの適切な運用スキルは、ITエンジニアにとって必須の技術と位置付けられています。2030年には最大で約79万人のIT人材が不足すると予測されており(経済産業省の2019年3月公表データ)、生産性向上と効率化が喫緊の課題です。レジストリを効果的に活用することで、開発チーム全体の生産性を向上させ、安定したソフトウェアデリバリーを実現できるため、その基礎知識と運用スキルは、企業の競争力向上にも直結します。

出典:IT人材需給に関する調査(経済産業省 / 2019年3月)、Docker実務で使える技術を完全解説!現場で役立つスキルとは(ITクロス / 2026年5月23日更新)

なぜ今、セキュリティが最優先されるのか

コンテナ技術の普及に伴い、Dockerレジストリにおけるセキュリティ対策の重要性は飛躍的に高まっています。現代の運用において、セキュリティ(脆弱性管理・アクセス制御)は最優先事項として位置付けられるべきです。その理由の一つは、意図しない公開設定による機密情報の流出リスクです。プライベートなレジストリが誤ってインターネットに公開されてしまうと、ソースコードや知的財産、認証情報などが外部に漏洩する可能性があります。これは企業の信頼を大きく損ねる事態につながりかねません。

もう一つの大きなリスクは、ベースイメージに含まれる脆弱性です。コンテナイメージは既存のベースイメージの上にアプリケーションを構築することが一般的ですが、そのベースイメージ自体に既知の脆弱性が含まれている場合、サプライチェーン攻撃の標的となる危険性があります。信頼できないソースから提供されたイメージや、長期間更新されていない古いイメージを使用することは、そのままセキュリティホールを作り出すことにつながりかねません。そのため、使用するイメージの信頼性を確認し、定期的に脆弱性スキャンを実施することが不可欠です。

これらのセキュリティリスクを軽減し、安全なコンテナ運用を実現するためには、レジストリレベルでの厳格なアクセス制御や、脆弱性のあるイメージをデプロイしない仕組みの導入が欠かせません。開発の効率化と同時に、セキュリティを確保するバランスの取れた運用が求められます。

効率的なイメージ管理の基本とベストプラクティス

効率的かつ安全なDockerイメージ管理を実現するためには、いくつかのベストプラクティスを導入することが推奨されます。まず、「最小権限の原則」に基づいたロールベースアクセス制御(RBAC)を導入し、ユーザーやサービスアカウントに対して必要な最小限のアクセス権限のみを付与することが極めて重要です。これにより、意図しないイメージの削除や変更、情報漏洩のリスクを大幅に低減できます。例えば、開発者はイメージをプッシュできるが、プロダクション環境へのデプロイは専用のサービスアカウントのみが行えるように設定するなど、役割に応じた権限管理を徹底します。

次に、「定期的なゴミ掃除」はイメージの肥大化を防ぎ、レジストリのストレージコストを削減する上で不可欠です。古くなったイメージや不要なタグが付いたイメージ、テスト目的で作成された一時的なイメージは、ディスク容量を圧迫し、場合によっては脆弱性を含む可能性もあります。これらのイメージを定期的に削除するポリシーを策定し、自動化されたクリーンアッププロセスを導入することが効果的です。多くのレジストリサービスには、ライフサイクル管理機能が備わっており、これらを活用することで自動的に古いイメージを整理できます。

さらに、政府機関等が提供する「情報セキュリティ対策のための統一基準」(総務省)などを参考に、暗号化通信(TLS)や認証基盤の活用を徹底してください。レジストリへのアクセスは必ずHTTPSを使用し、認証情報やイメージデータが通信経路で傍受されないようにします。また、多要素認証(MFA)の導入や、シングルサインオン(SSO)との連携も検討することで、認証プロセスのセキュリティを強化し、安全な運用環境を構築できます。

出典:政府機関等のサイバーセキュリティ対策のための統一基準(総務省 / 2025年3月版)

Dockerレジストリへのログインとイメージ操作の基本手順

レジストリへの安全なログイン方法

Dockerレジストリへアクセスするには、まずログインが必要です。公開レジストリであるDocker Hubや、プライベートなクラウドレジストリ(AWS ECR, GCP Artifact Registryなど)、または自前で構築したレジストリへのログインは、基本的にdocker loginコマンドを使用します。例えば、Docker Hubにログインする場合は、docker login と入力し、プロンプトに従ってユーザー名とパスワードを入力します。プライベートレジストリの場合は、docker login の形式で指定します。

ログイン情報はデフォルトでホームディレクトリ内の.docker/config.jsonに保存されますが、セキュリティの観点から、パスワードを平文で保存しない工夫が求められます。多くの環境では、クレデンシャルヘルパー(credential helper)を利用して、OSのキーチェーンや外部のセキュアなストレージに認証情報を保存することが推奨されます。これにより、パスワードがファイルシステム上に直接保存されるリスクを低減できます。また、CI/CD環境などでは、環境変数として認証情報を一時的に渡す、あるいはシークレット管理サービスと連携させることで、安全にログインを行うことが可能です。

特に重要なのは、レジストリへの通信がTLS/SSL(HTTPS)で暗号化されていることを常に確認することです。HTTPでの接続は、認証情報やイメージデータが第三者に傍受されるリスクがあるため、本番環境での利用は避けるべきです。自己署名証明書を使用する場合は、Dockerデーモンがその証明書を信頼するように設定する必要がありますが、運用上の手間を考えると、信頼できる認証局(CA)が発行した証明書を利用することが望ましいでしょう。

イメージのプッシュとプル実践ガイド

Dockerレジストリの基本的な操作は、「プッシュ(アップロード)」と「プル(ダウンロード)」です。これらの操作を通じて、開発したアプリケーションイメージを共有し、異なる環境で利用します。

  1. イメージのビルドとタグ付け: まず、Dockerfileを元にdocker build -t : .コマンドでイメージをビルドします。例えば、docker build -t myapp:1.0 . のように指定します。レジストリにプッシュする際には、レジストリのパスを含めた完全なタグが必要になります。例えば、Docker Hubの場合、docker tag myapp:1.0 /myapp:1.0 のようにリポジトリ名を付けます。プライベートレジストリの場合は、docker tag myapp:1.0 //myapp:1.0 となります。
  2. イメージのプッシュ: タグ付けが完了したら、docker push : コマンドでレジストリにイメージをアップロードします。例: docker push /myapp:1.0。これにより、イメージのレイヤーがレジストリに転送され、他のユーザーが利用できるようになります。
  3. イメージのプルと実行: 他の環境でイメージを利用する場合は、docker pull : コマンドでイメージをダウンロードします。例: docker pull /myapp:1.0。イメージがローカルにダウンロードされたら、docker run : でコンテナを起動できます。

これらの手順を理解し、実践することで、コンテナイメージを効率的に共有し、複数の開発者や環境間での連携をスムーズに進めることが可能になります。

イメージタグの命名規則とバージョン管理のポイント

Dockerイメージのタグは、そのイメージのバージョンや特性を示す重要な識別子です。適切な命名規則とバージョン管理を行うことで、イメージの管理が容易になり、誤ったバージョンのデプロイを防ぐことができます。一般的に推奨されるのは、セマンティックバージョニング(Semantic Versioning)に基づいたタグ付けです。「メジャー.マイナー.パッチ」の形式でバージョンを付与し、互換性のない変更にはメジャーバージョンを、後方互換性のある機能追加にはマイナーバージョンを、バグ修正などにはパッチバージョンを上げるようにします。これにより、利用者はタグを見るだけで、そのイメージがどのような変更を含んでいるかを把握しやすくなります。

また、latestタグの扱いには注意が必要です。latestタグは、デフォルトで最新のビルドされたイメージを指すことが多いですが、意図せず古いバージョンを上書きしてしまったり、どのビルドがlatestなのかが不明確になったりするリスクがあります。本番環境でのデプロイには、latestタグではなく、具体的なバージョンタグ(例: 1.2.3)を必ず使用することを強く推奨します。これにより、特定のバージョンに固定してデプロイでき、予期せぬ挙動を防ぐことができます。

イメージのライフサイクル管理においては、使用されなくなった古いタグやテスト用のタグを持つイメージを定期的に整理することも重要です。不要なイメージはレジストリのストレージを消費するだけでなく、場合によっては古い脆弱性を含むイメージが残存するリスクも生じます。自動化されたクリーンアップポリシーを導入し、一定期間が経過したイメージや特定のパターンを持つタグのイメージを削除することで、レジストリを常にクリーンな状態に保ち、管理コストを最適化できます。

ローカルレジストリ構築とGitサービス連携の実践例

ローカル環境でのレジストリ構築手順

開発やテスト目的で、ローカル環境にプライベートなDockerレジストリを構築することは非常に有用です。インターネットに接続せずにイメージを管理したり、CI/CDパイプラインのテストをしたりする際に役立ちます。最も簡単な方法は、公式のregistryイメージを使用することです。まず、以下のコマンドでレジストリコンテナを起動できます。

docker run -d -p 5000:5000 --name local-registry registry:2

このコマンドは、ポート5000でリッスンするレジストリをバックグラウンドで起動します。このレジストリにイメージをプッシュするには、まずイメージにタグを付け直す必要があります。例えば、既存のmy-app:latestイメージをローカルレジストリにプッシュする場合、docker tag my-app:latest localhost:5000/my-app:latest とタグ付けし、その後 docker push localhost:5000/my-app:latest でプッシュします。

注意点として、デフォルトのローカルレジストリはHTTPで動作します。Dockerのセキュリティポリシーにより、HTTPS以外のレジストリにプッシュするには、Dockerデーモンの設定ファイル(/etc/docker/daemon.jsonなど)に"insecure-registries": ["localhost:5000"]のような設定を追加して、明示的に信頼する必要があります。本番運用を想定するならば、自己署名証明書などを用いてHTTPS化を検討することが不可欠ですが、開発やテスト目的であればHTTP運用も可能です。これにより、インターネット接続なしでの迅速なイメージ共有・テストが可能となり、開発効率の向上に貢献します。

GitサービスとCI/CD連携の基本概念

モダンなソフトウェア開発において、GitサービスとCI/CD(継続的インテグレーション/継続的デリバリー)ツールとの連携は、デファクトスタンダードとなっています。この連携の核となるのが、ソースコードの変更をトリガーとして、自動的にコンテナイメージをビルドし、Dockerレジストリへプッシュするワークフローです。

具体的には、開発者がGitHubやGitLabなどのGitサービスにコードをプッシュすると、その変更をCI/CDツール(Jenkins, GitLab CI/CD, GitHub Actionsなど)が検知します。CI/CDツールは、あらかじめ定義されたパイプラインに従って、テストの実行、Dockerイメージのビルド、そしてビルドされたイメージをレジストリへプッシュするといった一連のタスクを自動で実行します。これにより、手動でのビルドやデプロイに伴うヒューマンエラーを削減し、開発から本番環境へのデプロイまでのリードタイムを大幅に短縮できます。

この自動化されたワークフローは、複数の開発者が並行して作業する大規模プロジェクトや、頻繁なリリースが必要なアジャイル開発において特にその威力を発揮します。常に最新かつテスト済みのイメージがレジストリに格納されることで、開発環境と本番環境の乖離を防ぎ、品質の高いソフトウェアを安定して提供することが可能になります。

重要ポイント
Git連携によるCI/CDワークフローは、単に作業を自動化するだけでなく、開発プロセス全体の信頼性と透明性を高めます。
どのコード変更がどのイメージに対応し、いつレジストリにプッシュされたかといった履歴が明確になるため、問題発生時の原因特定も容易になります。

自動化されたイメージ管理ワークフローの実装例

Gitサービスと連携した自動化されたイメージ管理ワークフローは、例えばGitHub Actionsを使って以下のように実装できます。これは、コードがmainブランチにプッシュされた際に、Dockerイメージをビルドし、Docker Hubへプッシュする簡易的な例です。

name: Build and Push Docker Image

on:
  push:
    branches: [ main ]

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v3
    - name: Log in to Docker Hub
      uses: docker/login-action@v2
      with:
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}
    - name: Build and push Docker image
      uses: docker/build-push-action@v4
      with:
        context: .
        push: true
        tags: ${{ secrets.DOCKER_USERNAME }}/my-app:latest

このYAMLファイルは、GitHubリポジトリの.github/workflows/ディレクトリに配置することで機能します。コードがmainブランチにプッシュされると、GitHub Actionsが自動的にトリガーされ、以下のステップを実行します。まず、リポジトリのコードをチェックアウトし、次にGitHubのシークレットに保存されたDocker Hubの認証情報を使ってログインします。最後に、現在のディレクトリ(context: .)にあるDockerfileを使ってイメージをビルドし、/my-app:latestというタグでDocker Hubにプッシュします。これにより、開発者はコードの変更に集中でき、イメージのビルドとプッシュという手間のかかる作業は完全に自動化されます。

このような自動化されたワークフローは、開発効率を向上させるだけでなく、一貫性のあるビルドプロセスを保証し、手動操作によるミスを排除する上で非常に有効です。さらに、このパイプラインにイメージのセキュリティスキャンや単体テストのステップを組み込むことで、より堅牢なソフトウェアデリバリー体制を構築することが可能です。

イメージ運用で陥りやすいトラブルと回避策

イメージサイズ肥大化による問題と解決策

Dockerイメージのサイズが不必要に大きくなると、様々な問題が発生します。ビルド時間の増加、レジストリのストレージコストの増大、イメージのプッシュ/プルに要するネットワーク帯域の消費、そしてデプロイ時間の長期化など、開発と運用の両面で非効率を招きます。特にCI/CDパイプラインにおいては、イメージビルドがボトルネックとなり、全体のデリバリーサイクルが遅延する原因となります。

この問題への主な解決策は、マルチステージビルドの導入です。マルチステージビルドは、複数のFROM命令をDockerfile内で使用し、最終的なイメージにはランタイムに必要な最小限の成果物のみを含める手法です。これにより、開発時に必要なコンパイラやSDK、一時ファイルなどが最終イメージに含まれることを防ぎ、イメージサイズを劇的に削減できます。例えば、Go言語のアプリケーションであれば、ビルドステージでコンパイルし、そのバイナリだけを小さなベースイメージ(scratchalpineなど)にコピーするといった流れです。

また、Dockerfileの記述方法も見直す必要があります。.dockerignoreファイルを使用して、ビルドコンテキストに不要なファイル(例: .git/node_modules/、テストファイルなど)を含めないように徹底してください。RUNコマンドで一時ファイルを生成した場合は、同じRUNコマンド内でそれらを削除し、レイヤーに永続化させない工夫も重要です。さらに、できるだけ小さいベースイメージ(例: alpinedistroless)を選択することも、全体のイメージサイズ削減に大きく貢献します。

セキュリティ脆弱性への対策と最新情報のキャッチアップ

Dockerイメージに含まれるセキュリティ脆弱性は、アプリケーション全体のリスクを高めます。これに対処するためには、継続的な監視と proactive な対策が不可欠です。まず、信頼できる、そして頻繁に更新されるベースイメージを選択することが重要です。公式イメージや、セキュリティパッチが定期的に適用されているベンダー提供のイメージを使用することで、既知の脆弱性リスクを低減できます。古くから更新されていないベースイメージは、新たな脆弱性が発見されても修正されない可能性が高いため、避けるべきです。

次に、イメージスキャンツールの活用は必須と言えるでしょう。Snyk、Trivy、Clairといったツールは、イメージ内の各レイヤーを解析し、含まれるパッケージの既知の脆弱性(CVEs)を検出します。これらのスキャンをCI/CDパイプラインに組み込むことで、脆弱性のあるイメージがレジストリにプッシュされたり、本番環境にデプロイされたりするのを未然に防ぐことができます。スキャンで脆弱性が検出された場合は、その深刻度に応じて、ベースイメージの更新や問題のあるパッケージの削除、代替パッケージの検討など、適切な対策を講じる必要があります。

さらに、最新のセキュリティ情報のキャッチアップも欠かせません。主要なOSベンダーやアプリケーションフレームワークのセキュリティアドバイザリ、Dockerやコンテナ技術に関するセキュリティニュースを定期的にチェックし、自社の運用に影響する可能性のある情報を早期に把握することが重要です。これにより、新たな脅威に対して迅速に対応し、イメージのセキュリティ状態を常に最新に保つことができます。

出典:コンテナイメージのセキュリティ(NEC / 2022年1月28日公開)、Dockerのセキュリティに関するベストプラクティス 10 項目(Snyk / 2025年3月5日更新)

アクセス制御の不備と情報流出の防止策

Dockerレジストリにおけるアクセス制御の不備は、最も深刻なセキュリティリスクの一つであり、機密情報の流出や不正なイメージのデプロイにつながる可能性があります。これを防ぐためには、厳格なアクセス管理と監視体制の構築が不可欠です。

まず、ロールベースアクセス制御(RBAC)を徹底し、ユーザーやサービスアカウントには、その役割を果たすために必要な最小限の権限のみを付与してください。例えば、開発者は自分のリポジトリにイメージをプッシュできるが、他のチームのリポジトリや本番環境へのデプロイ権限は持たない、といった具体的なポリシーを適用します。レジストリサービスによっては、リポジトリ単位やタグ単位での詳細な権限設定が可能ですので、これらを活用して厳密なアクセス制御を実装します。

次に、認証基盤との連携を強化することが重要です。エンタープライズ環境では、LDAP、OAuth、OpenID Connectなどの集中型認証システムとレジストリを連携させることで、ユーザー認証の一元化とセキュリティレベルの向上を図れます。多要素認証(MFA)の導入も、不正アクセスを防止するための有効な手段です。また、すべてのアクセスログ(ログイン、プッシュ、プル、削除など)を記録し、定期的に監査ログのレビューと監視を行うことで、異常なアクセスパターンや不正行為の兆候を早期に検知できるように体制を整えることが推奨されます。

最後に、レジストリの公開設定を定期的に確認し、意図せずパブリック設定になっていないかをチェックする習慣をチームで確立してください。特に、新しいリポジトリを作成する際には、デフォルトの公開設定に注意を払い、必ずプライベート設定で開始するように徹底することが、情報流出を防ぐ上で非常に重要です。

チェックリスト

【ケース】不要なイメージが原因でビルドが遅延した改善事例

課題:ビルド時間とディスク容量の増大

あるWebサービス開発企業A社では、複数の開発チームがマイクロサービスアーキテクチャを採用し、共通のDockerレジストリを利用していました。各チームは頻繁に新しいサービスや機能を追加し、それに伴い多くのコンテナイメージがレジストリにプッシュされていました。当初は問題ありませんでしたが、プロジェクトの規模が拡大するにつれて、CI/CDパイプラインのビルド時間が徐々に遅延するようになりました。特に、新たなコンテナイメージをビルドする際のキャッシュのヒット率が低下し、毎回のようにフルビルドが実行されるケースが増加しました。

ビルド時間が長引くことは、開発者の待ち時間の増加を意味し、デリバリーサイクル全体に悪影響を及ぼしていました。さらに、レジストリのディスク使用量も右肩上がりに増加しており、ストレージコストの増大という運用上の課題も顕在化していました。古いバージョンやテスト用に作成された一時的なイメージ、タグ付けされていない中間イメージが大量に蓄積されており、どれが最新で、どれが不要なのかを判断するのが困難な状況に陥っていたのです。このままでは、さらなる開発効率の低下と運用コストの増加が避けられないと判断され、抜本的な対策が求められました。

原因分析と具体的な改善アプローチ

A社では、ビルド遅延とディスク容量増大の原因を究明するため、CI/CDログの詳細分析とレジストリ内のイメージ棚卸しを実施しました。その結果、以下の主要な問題点が明らかになりました。

  1. イメージのライフサイクル管理の欠如: 開発チームは新しいイメージをプッシュする際に、古いイメージを積極的に削除するルールが徹底されていませんでした。結果として、過去のすべてのバージョンやテスト用イメージがレジストリに残り続けていました。
  2. 非効率なDockerfile: 一部のDockerfileではマルチステージビルドが適用されておらず、ビルドに必要な開発ツールや一時ファイルが最終イメージにも含まれてしまい、イメージサイズが肥大化していました。
  3. タグ付けのあいまいさ: latestタグの多用や、意味を持たないランダムなタグが付与されたイメージが多く存在し、どのイメージが実際に使用されているのかが不明確でした。

これらの原因に対し、A社は以下の3つの具体的な改善アプローチを実施しました。

  1. CI/CDパイプラインの見直し: ビルドとテストが成功した後、一定期間(例: 30日)が経過した古いイメージバージョンや、特定のブランチからビルドされた一時的なイメージを自動削除するステップをCI/CDスクリプトに追加しました。
  2. レジストリのライフサイクルポリシー導入: 利用していたクラウドレジストリの機能(AWS ECRのライフサイクルポリシーなど)を活用し、タグ付けされていないイメージや、特定のパターン(例: -test)を持つタグのイメージを自動的に削除するポリシーを設定しました。
  3. マルチステージビルドの徹底: 全てのDockerfileに対し、マルチステージビルドの適用を義務付けました。特に、ビルド時にのみ必要なツールやライブラリは最終イメージに含めないように徹底し、最終的なイメージサイズの最小化を図りました。また、.dockerignoreファイルの適切な活用も指導しました。

改善結果と持続的な運用への提言

A社が実施した一連の改善策により、ビルド時間とディスク容量の課題は大きく改善されました。CI/CDパイプラインにおけるイメージビルド時間は平均で約30%削減され、開発者が次のタスクに移るまでの待ち時間が大幅に短縮されました。これにより、開発チームの生産性は向上し、より多くの時間を新機能の開発や品質向上に費やすことができるようになりました。

また、レジストリのディスク使用量も安定し、不必要なストレージコストの増大が抑制されました。定期的なイメージクリーンアップの仕組みが構築されたことで、常にレジストリが最適な状態に保たれるようになり、どのイメージが最新で、どれが運用上重要であるかが一目でわかるようになりました。この事例は、Dockerイメージのライフサイクル管理と定期的なクリーンアップが、単なるストレージコスト削減だけでなく、開発効率と品質維持に直結する重要な運用施策であることを明確に示しています。

A社では、この成功を基に、今後はイメージのビルド段階で脆弱性スキャンを自動的に実行するステップをCI/CDパイプラインに組み込み、イメージのセキュリティをさらに強化する計画を進めています。持続的な改善と運用によって、安全かつ効率的なコンテナ開発環境を維持していくことが、今後のデジタルビジネスを加速させる上で不可欠であると結論づけられました。