Docker Hub とプライベートレジストリを切り替える方法

DockerBeginner
オンラインで実践に進む

はじめに

Docker は、開発者がアプリケーションを一貫性があり再現可能な方法でパッケージ化およびデプロイできるようにする、人気のコンテナ化プラットフォームです。Docker エコシステムの重要なコンポーネントの 1 つは、Docker イメージを保存および配布するためのリポジトリである Docker レジストリです。このチュートリアルでは、パブリックの Docker Hub とプライベート Docker レジストリの間を切り替える方法を学び、Docker デプロイを安全かつ柔軟なものにします。

Docker レジストリ入門

Docker レジストリは、Docker イメージを保存および配布する中心的なハブです。開発者や組織がコンテナ化されたアプリケーションを管理および共有できるように、Docker エコシステムの基盤となっています。このセクションでは、Docker レジストリの基礎、その目的、および利用可能なさまざまなレジストリの種類について探ります。

Docker レジストリとは何か?

Docker レジストリは、Docker イメージを保存および配布するサーバーサイドアプリケーションです。Docker イメージは、ユーザーやチーム間でプッシュ、プル、共有されるリポジトリとして機能します。Docker レジストリは、開発環境から本番環境まで、さまざまな環境でコンテナ化されたアプリケーションの配布とデプロイを可能にします。

Docker レジストリのタイプ

Docker レジストリには、主に次の 2 つのタイプがあります。

  1. パブリックレジストリ: Docker Hub など、パブリックレジストリはインターネット上の誰でもアクセスできます。開発者は、独自のアプリケーションの出発点として使用できる、多数の事前構築済みの Docker イメージを提供しています。

  2. プライベートレジストリ: プライベートレジストリは、個々の組織またはチームによって所有および管理されます。独自のカスタム Docker イメージをホストできるため、アプリケーションのアーティファクトに対するより高い制御とセキュリティを確保できます。

Docker レジストリを使用する利点

Docker レジストリは、開発者や組織にいくつかの利点を提供します。

  1. 集中化されたイメージストレージ: Docker レジストリは、Docker イメージを保存および管理するための集中化された場所を提供し、アプリケーションの共有と配布を容易にします。

  2. バージョン管理とタグ付け: レジストリは、Docker イメージにタグとバージョンを付けることができるため、アプリケーションの進化をより適切に整理および追跡できます。

  3. スケーラビリティと高可用性: 堅牢な Docker レジストリは、大量のイメージプルとプッシュを処理できるため、アプリケーションのスケーラビリティと高可用性を確保できます。

  4. セキュリティとアクセス制御: プライベートレジストリは、アクセス制御や認証などの強化されたセキュリティ機能を提供し、組織の機密なコンテナイメージを保護します。

  5. 自動ビルドとデプロイ: Docker レジストリは、継続的インテグレーション (CI) と継続的デリバリー (CD) パイプラインと統合できるため、アプリケーションのビルドとデプロイプロセスを効率化できます。

Docker レジストリの基礎を理解することで、コンテナ化されたアプリケーションを効果的に管理および配布し、さまざまな環境で一貫性があり信頼性の高いデプロイを確保できます。

Docker Hub のアクセス

Docker Hub は、Docker イメージの公開レジストリとして世界最大であり、開発者が独自のアプリケーションの出発点として利用できる、多数の事前構築済みのイメージを提供しています。このセクションでは、Docker Hub にアクセスして操作する方法を説明します。

Docker Hub アカウントの登録

Docker Hub にアクセスするには、アカウントを作成する必要があります。無料の Docker Hub アカウントは、Docker Hub ウェブサイト にアクセスして「Sign Up」ボタンをクリックすることで登録できます。

Docker Hub のログイン

Docker Hub アカウントを作成したら、Docker CLI を使用してレジストリにログインできます。ターミナルを開き、次のコマンドを実行します。

docker login

これにより、Docker Hub のユーザー名とパスワードを入力するよう求められます。認証が成功すると、Docker Hub とのやり取りを開始できます。

Docker イメージの検索

Docker Hub で Docker イメージを検索するには、docker search コマンドを使用できます。たとえば、公式の Ubuntu イメージを検索するには、次のように実行します。

docker search ubuntu

これにより、利用可能な Ubuntu ベースのイメージとその説明、スターの数(人気度の指標)、プル数の一覧が表示されます。

Docker イメージのプル

Docker Hub から Docker イメージをプルするには、docker pull コマンドにイメージ名を追加します。たとえば、最新の Ubuntu イメージをプルするには、次のように実行します。

docker pull ubuntu:latest

これにより、指定されたイメージが Docker Hub からダウンロードされ、ローカルマシンに保存されます。Docker コンテナで使用できるようになります。

Docker イメージのプッシュ

独自の Docker イメージを作成した場合は、それらを Docker Hub にプッシュして、他のユーザーと共有できます。まず、ローカルイメージに適切な Docker Hub リポジトリとユーザー名でタグ付けする必要があります。たとえば:

docker tag my-image username/my-image:latest

次に、docker push コマンドを使用して、イメージを Docker Hub にプッシュできます。

docker push username/my-image:latest

Docker Hub にアクセスして操作する方法の基本を習得することで、多数の事前構築済みの Docker イメージを活用し、独自のコンテナ化されたアプリケーションの配布を効率的に管理できます。

プライベートレジストリの設定

Docker Hub は便利なパブリックレジストリですが、組織のカスタム Docker イメージをホストするためにプライベートレジストリを設定する必要がある場合があります。このセクションでは、プライベート Docker レジストリの設定手順を案内します。

プライベートレジストリのデプロイ

プライベート Docker レジストリをデプロイするには、公式の Docker レジストリイメージを使用できます。最初に、Docker Hub からレジストリイメージをプルします。

docker pull registry:2

次に、以下のコマンドを使用してレジストリコンテナを実行します。

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

これにより、ローカルマシン上でポート 5000 をリスニングするプライベート Docker レジストリが起動します。

プライベートレジストリへのイメージのプッシュ

プライベートレジストリに Docker イメージをプッシュするには、適切なレジストリ URL でタグ付けする必要があります。プライベートレジストリが localhost:5000 で実行されていると仮定すると、イメージを次のようにタグ付けできます。

docker tag my-image localhost:5000/my-image:latest

次に、プライベートレジストリにイメージをプッシュします。

docker push localhost:5000/my-image:latest

プライベートレジストリからのイメージのプル

プライベートレジストリからイメージをプルするには、以下のコマンドを使用します。

docker pull localhost:5000/my-image:latest

プライベートレジストリのセキュリティ強化

デフォルトでは、プライベートレジストリはセキュリティが強化されていません。つまり、誰でもアクセスして操作できます。プライベートレジストリのセキュリティを強化するには、HTTPS を使用して認証を実装できます。

HTTPS の有効化

プライベートレジストリで HTTPS を有効にするには、有効な SSL/TLS 証明書が必要です。自己署名証明書を使用するか、信頼できる認証局 (CA) から取得できます。

証明書とキーファイルを入手したら、以下のコマンドでレジストリコンテナを実行できます。

docker run -d --name registry \
  -p 5000:5000 \
  -v /path/to/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2

これにより、HTTPS が有効になったレジストリコンテナが起動します。

認証の実装

プライベートレジストリに認証を追加するには、Docker レジストリが提供する組み込みのベーシック認証メカニズムを使用できます。これには、パスワードファイルを作成し、適切な環境変数を使用してレジストリコンテナを実行する必要があります。

プライベート Docker レジストリを設定することで、組織のコンテナイメージに対するより高い制御を維持し、アプリケーションのセキュリティと整合性を確保できます。

まとめ

このチュートリアルに従うことで、Docker Hub とプライベート Docker レジストリの間をシームレスに切り替えるための知識を得ることができます。これにより、パブリックレジストリとプライベートレジストリの両方の利点を活用し、Docker のデプロイを安全かつ拡張性があり、かつ独自のニーズに合わせてカスタマイズできます。