Container Registryとは

2024年7月31日

執筆者

Phill Powell

Staff Writer

Ian Smalley

Senior Editorial Strategist

Container Registryとは

Container Registryとは、コンテナ・イメージを保存およびアクセスのために保管するデータ・リポジトリー(または複数のリポジトリ)です。コンテナ・イメージは変更されない静的ファイルであり、実行可能なコードを保持し、ITインフラ上で分離された状態で実行されます。

Container Registryの大きな利点の1つは、KubernetesやDockerといったコンテナ・オーケストレーション・システムやプラットフォームと容易に接続できる点です。

コンテナを利用したアプリケーション開発の過程においては、DevOpsの一環としてContainer Registryを活用することができ、継続的インテグレーション(CI)ワークフローや継続的デリバリー(CD)ワークフローとの最適な統合が可能になります。これらのワークフローはいずれもソフトウェア開発における中核的なアクティビティです。CIとCDはどちらも自動化を前提とし、頻繁なコード変更に対応するように設計されています。主な違いは、CIが将来のリリースに向けたコードの準備を行うのに対し、CDはコードの実際のリリースに関わるという点です。Container Registryは、両方のワークフローをサポートします。

Container Registryには2種類あります。

  • パブリック・レジストリーは、データ転送の最適化手段や緩やかなアクセス制御を特徴としていますが、高度なセキュリティー・プロトコルは備えていません。。
  • プライベート・リポジトリーは、より安全な運用やワークロードの厳格な保護が求められる状況で一般的に使用されます。
ビジネス街をバックにスマホを持つ手

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

Container Registryの仕組み

Container Registryはコンテナ・イメージを保管し、ユーザーがイメージをレジストリーにアップロードしたり(「プッシュ」と呼ばれるプロセス)、別のシステムにダウンロードしたり(「プル」と呼ばれるプロセス)できるようにします。

Container Registryは単独で使用することも、他のContainer Registryと組み合わせて使用することも可能です。複数のコンテナがクラウド・サービスの提供を目的として1つの運用単位に統合される場合、その機能は、共通の成果を生み出すために密接に連携して働くエコシステムの構成要素に似た動作をします。

オブジェクト・ストレージ

Container Registryは、コンテナ・イメージに関するメタデータを記述するためにObject Storageを使用します。この方法は、そのようなメタデータを正常に転送する手段にはなりますが、本質的に制限があります。たとえば、複数のイメージを含む可能性のあるデータの場合、使用可能なリスティング・タグの数には限りがあります。

依存関係コンテナ

依存関係コンテナは、もう1つのストレージ手法です。これにより、アプリケーション内の依存関係の管理、登録、解決が可能になります。プログラミングの文脈において、依存関係とは、あるオブジェクトやプロセスが機能するために、別のオブジェクトが先に存在または実行されている必要があるという状況を指します。

このような依存関係は依存関係コンテナによって管理されます。依存関係コンテナは、テストを簡素化し、スケーラビリティを高め、コードの結合(プログラムされたオブジェクト間の過度な相互依存)を最小限に抑えるのに役立ちます。結合が強すぎると、エラーの発生やバージョン管理上の問題を引き起こす可能性があります。

認証

オンライン・セキュリティーの重要性が継続的かつ切迫した課題であることを踏まえると、リポジトリーへのアクセスを許可された個人の認証は極めて重要です。この認証は、当該Container Registryに固有の一連の権限に基づいて行われます。権限は、そのContainer Registry上のコンピューター・リソースを使用することが許可されている人物を定義するものです。

コンテナ・ランタイム

ランタイムの概念は非常に重要です。コンテナ・ランタイムとは、ホスト・システム上でコンテナを機能させるためのソフトウェアです。ランタイムは一連の手順を用いてコンテナを作成します。これらのステップには、コンテナを構成し、その環境を初期化するまでの全過程が含まれており、その際にはアプリケーションとその依存関係を保持するコンテナ・イメージの指示に従います。

コンテナが形成された後も、ランタイムは引き続き重要な役割を果たします。すなわち、コンテナのライフサイクルを管理し、その稼働状態を監視し、不要になった際にはリソースを解放する、といった作業を行います。

ロード・バランシング

Container Registryは、ロード・バランシングもサポートしています。コンテナ・ネイティブなロード・バランシングでは、バランサーのトラフィックが、あらかじめ想定された受信先に直接ルーティングされます。このように、Container Registryはロード・バランサーと連携して機能し、トラフィックを余分なネットワーク経路に通す必要をなくします。

AI Academy

ハイブリッドクラウドでAI対応を実現

IBMのエキスパートが主催するこのカリキュラムは、ビジネス・リーダーが成長を促進するAI投資に優先順位を付けるために必要な知識を習得できます。

Container Registryのメリット

Container Registryには、次のような多くのメリットがあります。

運用の明確さ

Container Registryは、イメージを長期保存するための専用の保管場所を持つことで、運用の明確性を高めます。プロダクション・アーティストやソフトウェア開発者は、しばしば大量のアセットに悩まされることがあります。Container Registryは、これらのアセットを1か所に集約することで、この問題を軽減します。

パフォーマンスの効率化

Container Registryは、特に優先度の高いタイミングにおいて、イメージの正確な所在が不明なことによって生じるパフォーマンスの遅延を防ぐのに役立ちます。Container Registryは、いつでも確認できるインベントリ(一覧)を提供することで、この問題を解決します。

信頼できる唯一の情報源

レジストリーは、あらゆるコンポーネントやアプリケーションの信頼できる唯一の情報源を形成し、その構成内容に対して常に透明性を確保します。Container Registryを利用することで、最も新しいバージョンが常に使用可能または複製可能な状態に保たれ、最適なバージョン管理が実現されます。

セキュリティーの強化

また、Container Registryにはイメージに対する強化されたセキュリティ対策も備わっています。アクセス・プロトコルによって、セキュリティーの観点からイメージを保護するとともに、脆弱性スキャンにより、ユーザーはイメージ内部を深く確認し、潜在的な問題を発見することができます。

Container Registryのユースケース

以下のアクティビティでは、Container Registryが広く活用されています。

ソフトウェア開発

ソフトウェア開発はContainer Registryの主な用途はソフトウェア開発であり、そもそもソフトウェア開発者を支援するために、イメージを保管・アクセス・共有できる作業スペースを提供する目的で作られました。

エンタープライズ向けソフトウェアの提供

社内でソフトウェア・アプリケーションを設計・提供する組織にとって、プライベートContainer Registryは、必要不可欠なインフラとみなされることが一般的です。プライベート・レジストリーを利用することで、ユーザーはソフトウェアのサプライチェーンに対して、より高いレベルでの制御を実現できます。

マイクロサービス

また、多くのContainer Registryは、マイクロサービスのユーザーに対し、コンテナ・クラスター内で特定のマイクロサービスを特定・接続するプロセスを明確化することで支援を行っていますこのようなレジストリーは、イメージに名前と仮想IPアドレスを割り当てるドメイン・ネーム・システム(DNS)サービスを提供します。

アプリケーションのデプロイ

Container Registryは、そのモジュール化され軽量な特性により、アプリケーションの迅速な反復を促進します。さらに、デプロイにおけるその他の利点としては、レジストリのポータビリティーと一貫性が挙げられます。

科学研究

Container Registryは、遺伝学データのサポートやゲノム研究の推進など、特定の科学的目的に対応できるようカスタマイズされつつあります。研究成果は他の形式でも容易に再現できるため、主要なコードやアーティファクトを共有することが可能になります。

DockerとKubernetes

コンテナ・オーケストレーションの主なプロバイダーは2つあり、これらがContainer Registryの利用において大きなシェアを占めています。

Docker

Dockerは、アプリケーションの作成、デプロイ、実行の複雑さを軽減するために2013年に開発・導入されたコンテナ・オーケストレーション・システムです。Docker は、軽量で移植性が高く、自己完結型のコンテナを、インフラに依存せずあらゆるプラットフォーム上で実行できる手段として広く支持されるようになり、人気を集めています。この使いやすさの評価によって、Docker は人工知能(AI)機械学習(ML)に特化したアプリケーションをデプロイする手段としても選ばれるようになりました。

同様に、Dockerコンテナは非常に高い可搬性を持ち、インフラを問わず、あるマシンから別のマシンへ容易に移動させることができます。さらに、Dockerを使用すれば、AIやMLのアプリケーションをローカルマシン、エッジデバイス、あるいはクラウド・サーバーなどの別の環境に導入するのも比較的容易であるという利点があります。

Kubernetes

Kubernetesは、オープンソースのコンテナ・オーケストレーション・プラットフォームです。2013年に開始され、ギリシャ語で「操縦士」を意味する言葉にちなんで名付けられたKubernetesは、管理、デプロイ、スケーリングなど、さまざまなソフトウェア・プロセスを自動化するために使用されます。

Kubernetesサービスでは、1台以上のコンピューター(仮想マシンまたはBare Metal Serversのいずれか)がKubernetesクラスター内で接続され、さまざまな規模や種類のコンテナ・ワークロードを実行できる環境が構成されます。Kubernetesは、通常Helmチャートとともに導入されます。Helmチャートとは、Kubernetesクラスター内のさまざまなリソースを記述し、それらのリソースを1つのアプリケーションとしてパッケージ化するためのファイル群です。

Kubernetesは、コンテナ化された機械学習(ML)アプリケーションの利用や容易なスケーリングを可能にし、さまざまなMLフレームワークやツールをサポートしています。また、KubernetesはAIのトレーニング・ワークロードを実行するためのプラットフォームとしても利用できます。

DockerとKubernetesは多くの点で似ていますが、それぞれの持つスケールにおいて違いがあります。Dockerは本質的にはコンテナ・ランタイムであるのに対し、Kubernetesは複数のコンテナ・ランタイム上でコンテナを実行・管理するために設計された、包括的なプラットフォームです。この違いを示す例として、Kubernetesは非常に大規模であるため、DockerはKubernetesがサポートする複数のコンテナ・ランタイムのうちの1つにすぎない、という点が挙げられます。

その他の主要Container Registryプロバイダー

Container Registryプロバイダーの市場は常に進化しており、どの時点においても新たな企業が参入したり、撤退したりしています。それでも、ここで紹介するプロバイダーは、この分野において確固たる評判を築いてきた企業です。

  • Alibaba:Alibaba Groupは「世界中のビジネスをより簡単にする」ことを目標に掲げています。AlibabaのCloud Container Registryは、同一アカウントに属するインスタンス(運用単位)間でのイメージの複製を可能にします。Alibaba Cloud Container Registryは、各イメージのライフサイクル全体を通じて管理できるように設計されています。
  • Amazon:Amazon Web Services(AWS)は、Amazon Elastic Container Registry(ECR)を運営しており、イメージの脆弱性スキャンを管理するAmazon Inspectorを組み込んでいます。ECRはアカウント間およびリージョン間の複製も可能にしており、イメージへのアクセスをより容易にします。
  • DockerHub:Dockerは、自社のイメージ・リソースであるDockerHubを運営しており、Dockerユーザー、ソフトウェア・ベンダー、オープンソース・プロジェクトによって共有された10万以上のイメージに無料でアクセスできます。プライベート利用向けには、有料のDocker Container Registryサービスも提供されています。DockerHubは、ログイン、プッシュ、プルといった主要な操作を可能にするDockerコマンドライン・インターフェース(Docker CLI)を使用しています。
  • GitHub:現在はMicrosoft傘下にあるGitHubは、2007年に設立されました。このプラットフォームは、コードの共有、共同作業、コード管理を促進する機能が評価され、開発者から広く支持されています。(なお、オープンソース・ソフトウェアと誤解されがちですが、GitHubは実際には商用の独自ソフトウェアであることに注意が必要です。)
  • GitLab:GitHubと混同されることも多いGitLabは、2014年に設立されました。GitLab Container Registryは、コンテナ・イメージ用の安全なプライベート・レジストリーです。イメージの作成および公開の両方に使用することができます。GitLab Container Registryはオープンソース・ソフトウェアと連携して動作します。最新バージョン(現在ベータ版)では、ソートおよびフィルタリング機能が強化されています。
  • Google:Google CloudのContainer Registryである「Artifact Registry」は、Google Cloudの各種ツールやランタイムと統合されており、自動化されたパイプラインの利用をサポートしています。また、Kubernetesを最初に開発したのもGoogleであり、現在このプロジェクトは多くの貢献者によって運営されており、商標はCloud Native Computing Foundationが保有しています。現在では、各パブリッククラウド・プロバイダーが独自のKubernetesをマネージド・サービスとして提供しています。
  • IBM:IBM® Cloud Container Registryを利用すれば、ユーザーは簡単に自分専用のレジストリーを立ち上げ、IBM Cloud Kubernetes Serviceで使用するためのプライベート・イメージをレジストリーにプッシュすることができます。ユーザーは、専用でフルマネージドなレジストリーを持つことによるプライバシーの恩恵を受けられます。このサービスは無料で試用可能で、従量課金制が採用されており、使用した分だけ支払う仕組みです。
  • Microsoft:Microsoft の Azure プラットフォームには、Azure Container Registry(ACR)が含まれており、DockerイメージやOpen Container Initiative(OCI)イメージを保持し、OCIアーティファクトやHelmチャートにも対応しています。ACRの接続レジストリー機能(プレミアムサービス層の一部)は、オンプレミスまたはリモートにレプリカを作成し、クラウドベースのACRとコンテナ・イメージおよびOCIアーティファクトを同期させます。ACRは、WindowsおよびLinuxの両方のイメージに対応しています。コンピューター・プログラムと対話する方法の1つとして、コマンドラインと呼ばれるテキストを記述・入力する手段があります。この方式を用いるオペレーティング・システムは、コマンドライン・インターフェース(CLI)を採用しているといえます。現在では多くのユーザーがグラフィカル・ユーザー・インターフェース(GUI)に頼っていますが、特にスクリプトを記述してプログラムを自動化したい人々の間では、CLIの使用が今も好まれています。Azureは、人気の高いDocker CLIを利用して、ログイン、プッシュ、プルといった主要なコンテナ・イメージ操作を実行できる柔軟性をユーザーに提供しています。
  • Red Hat:Red Hatは、1993年の創業以来、Linuxベースのプログラミングを推進してきました。同社のContainer RegistryであるOpenShift Container Platform(OCP)は、ユーザーが必要に応じてイメージ・リポジトリーへ自動的にアクセスできるようにし、アプリケーションのビルドによって生成されたイメージをプッシュするための標準的な場所を提供します。
関連ソリューション
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloudは、フルマネージドのOpenShiftコンテナ・プラットフォーム(OCP)です。

Red Hat OpenShiftの詳細はこちら
コンテナ・ソリューション

コンテナ・ソリューションは、セキュリティー、オープンソースのイノベーション、迅速なデプロイメントにより、コンテナ化されたワークロードを実行およびスケールアップします。

コンテナの詳細はこちら
クラウド・コンサルティング・サービス 

IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。

クラウド・サービス
次のステップ

IBMのコンテナ・ソリューションでインフラストラクチャーをモダナイズします。IBMの包括的なコンテナ・プラットフォームを使用して、柔軟性、セキュリティー、効率性を備えたコンテナ化されたワークロードを環境全体で実行、拡張、管理します。

コンテナ・ソリューションの詳細はこちら 無料のIBM Cloudアカウントを作成