コンテナレジストリは、コンテナイメージを保存・アクセスするための場所であり、アプリケーション開発において重要な役割を果たします。
このソフトウェアは、広く利用されているコンテナオーケストレーションプラットフォームに直接接続し、クラウドネイティブアプリケーションの作成と提供にかかる開発者の時間を節約します。
さまざまな意味で、コンテナレジストリはシステムとコンテナイメージの間の仲介役として機能します。そのため、開発者はレジストリを使ってコンテナイメージを保存し、共有してきました。レジストリには、コンテナ間の通信に不可欠なAPIパスやアクセス制御パラメーターも保存されます。
コンテナレジストリ分野における主なトレンドを以下に紹介します。
さらに詳しく:主要なコンテナレジストリソフトウェア。
パブリックレジストリとプライベートレジストリ
コンテナレジストリには、パブリックとプライベートという2つの主な種類があります。
パブリックレジストリは通常、個人の開発者や小規模チームだけが利用します。導入は迅速に進められますが、拡張性に乏しく、エンタープライズ向けの機能も不足しています。また、パッチ適用、プライバシールールの適用、アクセス制御の課題への対応も困難です。
一方、プライベートレジストリには、こうした問題に対処する機能が組み込まれています。Dockerレジストリを例に挙げると、Dockerイメージを保存・配布します。複数のリポジトリに分かれており、それぞれのリポジトリにはイメージの全ての変更履歴が保存され、Dockerユーザーはローカルにイメージを取得できます。また、適切なアクセス権限があれば、新しいイメージをレジストリにプッシュすることも可能です。このサーバーサイドアプリケーションはステートレスで、拡張性に優れています。同社の最新リリースは無料でダウンロードできます。
現在も一部の個人や少数の企業はパブリックレジストリを利用しています。しかし、現在では大半の組織がプライベートレジストリを使っています。
豊富な機能を備えた代替製品
Dockerレジストリは無料です。人気があり、多くのユーザーに利用されています。しかし、経験豊富なコンテナユーザーが求める機能を全て備えているわけではありません。
特にKubernetesの普及に伴い、Dockerが提供する機能を超えるエンタープライズクラスの機能がより強く求められています。無料のDockerレジストリを利用しているユーザーは、Docker Hubでスロットリングや保持に関する問題に直面する可能性があります。
例えば、JFrog Container Registryは、Dockerコンテナに加えて、Kubernetesのデプロイメント向けのHelm Chartリポジトリもサポートしています。全てのDockerイメージを一元的に管理・整理するための単一のアクセスポイントとして利用できます。JFrogはスロットリングの問題を回避し、リモートのDockerコンテナレジストリへの信頼性が高く、一貫性と効率性に優れたアクセスを提供します。
JFrogは、その他にも複数のエンタープライズ機能を提供しています。オンプレミス、セルフホスト、ハイブリッド、マルチクラウド環境をサポートし、Amazon Web Services(AWS)、Microsoft Azure、Google Cloudから選択できます。信頼性を維持しながら拡張でき、DevOpsチームがアクセスと権限を管理できます。検索可能なプロパティを持つメタデータをアーティファクトに追加し、名前、アーカイブ、チェックサム、プロパティによる検索を実行できます。また、きめ細かなアクセス制御とHelmリポジトリによってDockerイメージを管理し、DockerイメージとKubernetesクラスターを可視化できます。
さらに詳しく:Hasura、Acquia、NeuVector、Sylabs、ChaosIQによるコンテナ化の利用方法。
ハイパースケーラーが本格参入
DockerとKubernetesの人気が急上昇する中、大手ハイパースケーラーは、多くのユーザーがパブリックレジストリや無料のプライベートレジストリ、その他の独自レジストリに移行していることを認識しています。これはハイパースケーラーの方針に反します。自社で処理できるのに、なぜ他社にビジネスを譲ったり、トラフィックを処理させたりするのか、という考え方です。
そのため、各社は独自のレジストリを開発しました。
- Google Container Registry:Dockerイメージを一元管理する場所として機能します。開発者はこれを使って脆弱性分析を実行できます。Googleは、Google Cloud上で安全なプライベートDockerイメージストレージへのアクセスを提供します。これによりIT部門は、誰がイメージにアクセス、表示、ダウンロードできるかを管理できます。
- Amazon Elastic Container Registry(ECR):コンテナソフトウェアをどこでも保存、共有、デプロイできます。AWS Free Tierを利用すれば、ユーザーは1年間、月500 MBのプライベートリポジトリストレージでAmazon ECRを開始できます。高性能なホスティングを提供し、インフラストラクチャをインストールしたり拡張したりせずにAmazon ECRへコンテナイメージをプッシュできる機能などを備えています。
- Microsoft Azure Container Registry:コンテナイメージを保存し、コンテナワークロードを高速かつスケーラブルに取得できるほか、プライベートDockerコンテナイメージと関連コンテンツを処理します。
レジストリのセキュリティ
レジストリの人気が高まるにつれて、サイバー犯罪者の標的となるケースも増えました。そのため現在では、パブリックとプライベートの両方のレジストリに、より多くのサイバーセキュリティ機能が組み込まれています。
例えば、Google Container Registryには脆弱性スキャン機能が組み込まれており、ソフトウェアのデプロイサイクルの早い段階で脆弱性を検出し、コンテナイメージを安全にデプロイできることを確認できます。常に更新されるデータベースにより、脆弱性スキャンを最新の状態に保ち、新たなマルウェアの亜種を検出できます。
Amazon ECRも、自動暗号化とアクセス制御により、HTTPS経由でイメージを安全に共有・ダウンロードするために利用できます。
また、Microsoft Azure Container Registryには、自動化されたコンテナのビルドとパッチ適用に加え、Azure Active Directory(Azure AD)認証、ロールベースのアクセス制御、Docker Content Trust、仮想ネットワーク統合による統合セキュリティが備わっています。
さらに詳しく:コンテナレジストリ市場。