オンプレミスでDocker Registryを構築する手順を別の記事に書きましたが、運用を考えるとクラウドで提供されているサービスを利用した方が楽ですね。この記事ではOracle Cloud Infrastructure (OCI)で提供されている可用性の高いプライベート・コンテナ・レジストリ・サービスであるOracle Cloud Infrastructure Registry (OCIR)を使う手順をまとめています。
事前準備
まずは、OCI上にOCIRの管理ユーザーなど必要なリソースを作成していきます。
ブラウザで、Oracle Cloud Infrastructureのコンソールにアクセスしてください。
OCIコンソールでメニューを展開し、[Identity] - [Users]を選択します。
[Create User]を選択し、OCIRの管理ユーザーとしてregistry-managerというユーザーを作成します。
ユーザーが作成されるとUsersに表示されるので、作成された[registry-manager]を選択し、[Auth Tokens]で[Generate Token]を選択します。
DESCRIPTIONにregistry-tokenを入力し、作成されたトークン(スクリーンショットでは 4(vmAFE):(Ex8:uAIAZc )をメモしておきます。
次に、メニューで[Identity] - [Groups]を選択し、[Create Group]で管理グループとしてregistry-managersというグループを作成します。
グループが作成されるとGroupsに表示されるので、作成された[registry-managers]を選択し、[Add User to Group]を選択します。USESRで[registry-manager]を選択し、グループにユーザーを追加します。
最後に、メニューで[Identity] - [Policies]を選択し、[Create Policy]でregistry-managers-policyというポリシーを作成します。STATEMENTには以下の文を記入します。
Allow group registry-managers to manage repos in tenancy
これで、registry-managerというユーザーがOCIRにアクセスできるようになりました。
OCIRを使ってみよう
docker loginでOCIRにログインします。OCIRのサーバーは <リージョン・コード>.ocir.iod 、ユーザー名は <テナンシー名>/<ユーザー名>、パスワードは事前準備で作成したトークンです。ご自身の環境に合わせて、下記の表から適切なリージョン・コードを見つけてください。
リージョン・コード | リージョン名 |
---|---|
fra | Frankfurt |
iad | Ashburn |
lhr | London |
phx | Phoenix |
下記の例ではAshburnでホストされているshakiyamというテナンシーのOCIRにログインしています。
echo '4(vmAFE):(Ex8:uAIAZc' | docker login iad.ocir.io -u shakiyam/registry-manager --password-stdin
Docker Hubからイメージを手に入れ、自分のOCIR上にタグ付けします。タグ付けの形式は、<リージョン・コード>.ocir.io/<テナンシー名>/<リポジトリ名(オプション)>/<イメージ名>:<タグ>です。
docker image pull hello-world:latest
docker image tag hello-world:latest iad.ocir.io/shakiyam/hello-world:latest
タグ付けしたイメージをpushします。
docker push iad.ocir.io/shakiyam/hello-world:latest
OCIコンソールでメニューを展開し、[Developer Services] - [Registry]を選択します。
イメージがpushできていることが確認できます。
参考
この記事では管理用のユーザーしか作成しませんでしたが、OCIRのリポジトリでユーザーが実行できる操作はきめ細かく制御できます。詳細はOCIRのマニュアルをご参照下さい。
- 英語マニュアル Overview of Registry
- 日本語マニュアル Registryの概要