コンテナーの普及が拡大するにつれて、コンテナーのプッシュとプルを管理するエンタープライズ グレードのコンテナー レジストリの重要性が増しています。多くの企業は、JFrog Artifactory を Docker および Helm レジストリとして利用していますが、コンテナー サービスを管理するため Docker Desktop も戦略的に利用しています。
このブログでは、ローカル、リモート、仮想など、組織のさまざまなリポジトリ全体でコンテナー イメージのプッシュとプルを管理するため、JFrog Artifactory を Docker レジストリとして使用できるように Docker Desktop を設定する方法と、Artifactory と Docker Desktop を連携させることでユーザーがポートフォリオ全体のコンテナーの移動を細かく制御できるようにする方法を紹介します。
準備
このガイドでは、以下が必要になります。
- 組織の有効な Docker Desktop アカウント
- JFrog Platform の有効な評価版またはサブスクリプション
Docker Desktop と JFrog をリンクする
コンテナーは重要であり、どの企業も本番環境へのリリースに向けて進捗状況を把握したいと考えています。このガイドでは、Artifactory をコンテナー レジストリとして、Docker Desktop と JFrog Software Supply Chain Platform を連携します。
Docker Desktop を標準化し、組織内のコンテナー移動のコントロール プレーンとして使用する場合は、Docker Desktop サービスで Artifactory へのアクセスを許可するように適切に設定されていることを確認してください。
Docker Desktop の Registry Management 機能は、Docker Desktop で管理する許可されたリポジトリおよびリポジトリ タイプ (Artifactory ローカル、リモート、仮想リポジトリなど) にのみ適切にアクセス可能であり、組織のアクセス ルールに従ってすべての権限が適用されていることを確認するのに役立ちます。
リポジトリやコンテナー イメージへ自由にアクセスできないようにすることがベスト プラクティスなので、まず、選択した Docker Desktop サービスに接続するように Artifactory が設定されていることを確認します。
最初に、Docker Hub で Artifactory を許可されたレジストリとして設定します (手順は公式ドキュメントにも記載されています)。Registry Management 機能は、クラウドとオンプレミスの両方の JFrog Artifactory インスタンスを管理できます。
- Docker Hub アカウントに組織オーナーとしてサインインします。
- 組織を選択して、[Organizations] ページの [Settings] タブに移動して、[Registry Access] を選択します。
- [Registry Access Management] に切り替えて Artifactory レジストリの権限を設定します。
- リストに Artifactory を追加するには、[Add] を選択し、該当するフィールドにレジストリの詳細を入力して、[Create] を選択します。
- レジストリ リストに Artifactory が表示されていることを確認し、[Save & Apply] を選択します。
- [Activity] タブで変更が保存されたか確認できます。レジストリは無制限に追加できます。
アクセスを全体に適用する
次に、Artifactory を使用しているすべての開発者が、誤って特定のリポジトリや特定のパイプラインにアクセスできないようにします。そのためには、Docker Desktop で組織全体のアクセス ルールを適用する必要があります。IT 部門が組織内の全員にこれらの設定を適用するか、ビジネス ルールや運用設定に応じて個々の開発者がこれを手動で設定することができます (公式ドキュメントを参照)。
サインインを強制するように registry.json を設定する
デフォルトでは、組織のメンバーは、Docker アカウントにサインインしなくても、各自のマシンで Docker Desktop を使用できます。registry.json ファイルを使用することで、ユーザーが組織のメンバーである Docker アカウントにサインインして、組織の設定がユーザーのセッションに適用されるように徹底することが可能です。
管理者は registry.json ファイルでユーザーが所属する Docker 組織を指定し、ユーザーのセッションに設定を適用することで、組織のルールが適用された状態でユーザーが Artifactory などのレジストリにアクセスするように徹底できます。Docker Desktop インストーラーは、インストール プロセスの一環として、ユーザーのマシン上に registry.json ファイルを作成できます。
ユーザーのマシン上の registry.json ファイルを設定したら、Docker Desktop はユーザーにサインインするように促します。ユーザーがサインインしない場合、あるいは registry.json にリストされていない組織でサインインしようとした場合、Docker Desktop へのアクセスは拒否されます。
registry.json ファイルをデプロイしてユーザーに認証を強制することを強く推奨しますが、必須ではありません。強制認証には次のメリットがあります。
- 管理者は、チーム メンバーに次の制限を課す Image Access Management 機能などを設定できます。
- Docker Hub にある Trusted Content (信頼できるコンテンツ) にのみアクセスできます。
- 指定されたイメージ カテゴリからのみプルできます。
- Artifactory の認証ユーザーは、Docker Hub から無制限にプルできるためレート制限を気にする必要がありません。
- ユーザーが特定の組織に追加されるまで Docker Desktop へのアクセスをブロックします。
registry.json ファイルを作成する
registry.jsone ファイルを作成する前に、ユーザーが Docker Hub 内の少なくとも 1 つの組織のメンバーであることを確認します。registry.json ファイルがユーザーがメンバーである少なくとも 1 つの組織と一致する場合、ユーザーは Docker Desktop にサインインして、すべての組織にアクセスできます。
お使いのオペレーティング システムに応じて、registry.json ファイルを以下の場所に作成し、ユーザーがファイルを編集できないようにする必要があります。
- Windows:
/ProgramData/DockerDesktop/registry.json
- Mac:
/Library/Application Support/com.docker.docker/registry.json
- Linux:
/usr/share/docker-desktop/registry/registry.json
registry.json ファイルで以下を指定する必要があります。myorg は組織名に置き換えてください。このファイルでは、大文字と小文字が区別されるため、組織名には小文字を使用してください。
{
"allowedOrgs": ["myorg"]
}
Docker Hub から、組織の registry.json ファイルをダウンロードしたり、特定のコマンドをコピーして組織のファイルを作成できるようになりました。ファイルをダウンロードしたり、コマンドをコピーするには、以下の手順に従ってください。
- Docker Hub に組織オーナーとしてサインインします。
- [Organizations] > [Your Organization] > [Settings] に移動します。
- [Enforce Sign-in] を選択し、Windows、Mac、または Linux 用の画面上の指示に従ってください。
注: お使いのオペレーティング システムに応じて組織の registry.json ファイルを作成する他の方法については、Docker Desktop のドキュメントを参照してください。
Docker と Artifactory をテストする
設定が完了したら、すべてが正しく動作すること、開発者がアクセスすべきでないものにアクセスできないこと (許可されていないアクセスによって組織が晒されることがないこと)、必要なすべてのレジストリにアクセスできることを確認する必要があります。
グローバルな変更を確認する
registry.json ファイルを作成してユーザーのマシンにデプロイした後、ユーザーに Docker Desktop を起動して Artifactory にアクセスするように求めることで、アクセスの変更が反映されたか確認できます。
設定が有効になっていれば、Docker Desktop は起動時に組織の資格情報を使用して認証するようユーザーに要求します。ユーザーが認証に失敗すると、エラー メッセージが表示され、Docker Desktop へのアクセスが拒否されます。この場合、レジストリとして Artifactory にアクセスすることはできません。
テストする
正しく設定されていることを確認する簡単な方法は、開発者のマシンから作成した許可リストにないリポジトリへアクセスしてみることです。システムがアクセスを許可しなければ、正しく設定できています。リストにないリポジトリにアクセスできる場合は、上記の手順を再確認し、すべての設定が正しいことを確認してください。
これで完了です!
設定が完了すると、開発者と管理者には以下のような画面が表示され、Docker Hub と選択した JFrog Artifactory リポジトリの両方にアクセスできるようになります。これで、Docker Desktop の機能を使ってレジストリをスムーズに管理し、JFrog ユーザーのメリットである Docker Hub からの無制限のプルを利用することができます。
Artifactory を使用する理由
Docker イメージを管理および整理する最も一般的な方法は、Docker レジストリを使用することです。そうすることで、Docker イメージへの信頼できる、セキュアで、一貫性のある、効率的なアクセスを確立し、一元化された単一の場所からチーム間で Docker イメージを効率良く共有できます。Artifactory を使用すると、ローカル、リモート、仮想 Docker レジストリを数分でセットアップし、Federated Repositories を利用してマルチサイト環境全体でアーティファクトとメタデータを双方向にミラーリングできます。ミラーリングは、Artifactory と Docker Desktop の価値を何倍にも高めて、チームの同期と効率性を維持し、無限に拡張する強力な方法です。
JFrog Platform の無料体験版のご利用については、以下よりお問い合わせください。
Docker Desktop に関するお問い合わせはこちらから。
記事参照: Using Docker Desktop and Artifactory for Enterprise Container Management