こんにちは!テリロジーのY.Tです。
今回はOracle Cloud Infrastructure Registry(OCIR)について、ご紹介していきます。
Oracle Cloud Infrastructure Registry(OCIR)(以下、OCIのコンテナレジストリサービス)は、
Dockerリポジトリが構築可能なサービスで、Dockerイメージの格納、また、
共有することができます。作成したリポジトリは、インターネットに公開するパブリックリポジトリ、もしくはプライベートリポジトリとして利用することができます。
Dockerとは
Dockerとは、ホストOS上でコンテナと呼ばれる仮想的な区間を作成する、仮想化技術の1つです。
仮想化技術は、ホスト型仮想化、ハイパーバイザー型仮想化、コンテナ型仮想化の3つに分類することができます。
コンテナ型は、ホストOS上にDockerエンジンを構築するだけで、各コンテナを動かすことができます。
Dockerの仕組み
各コンテナはコンテナイメージをもとに作成されます。コンテナイメージは、環境構築に必要なコマンドやパッケージがセットになっているものです。
通常、WordPressを構築する際には、コマンドを実行し、必要なパッケージをインストールする作業が必要に なります。しかし、1つのサーバ上にDockerエンジンを構築し、Dockerのコマンドを使って、WordPressの コンテナイメージを取得し、実行することで、構築に必要なパッケージを個別にインストールせずに、簡単にWordPressを構築することができます。
また、以下の図のように、コンテナイメージはコンテナリポジトリと呼ばれる箱の中にあります。コンテナリポジトリには、ユーザ同士でイメージを共有できるDocker Hubや、今回の記事でご紹介するOCIのコンテナレジストリサービスがあります。
自ら作成したコンテナイメージを、コンテナリポジトリに保存(Push)することもできます。
Docker Hubからイメージを取得(Pull)
さて、ここからはDocker Hubから取得(Pull)した任意のイメージを、OCIのコンテナレジストリサービスに保存(Push)する手順をご紹介します。
はじめに、Docker公式サイトページ「Install Docker Engine on Ubuntu」を参考にして、
以下のコマンドでUbuntu18.04.5 LTSの検証用端末にDockerエンジンをインストールします。
$sudo apt-get status docker
※古いバージョンのDockerがある場合は以下のコマンドで削除します
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
インストール後、以下のコマンドで任意のイメージをDocker Hubリポジトリから取得(Pull)します。
$ docker pull <任意のイメージ名>
以下のコマンドで取得したイメージを確認します。
$ docker images
OCIのコンテナレジストリサービスへイメージを保存(Push)
Dockerエンジンをインストールした端末で、以下のコマンドを実行し、OCIのコンテナレジストリに接続します。
※<リージョンID>はOCI公式「レジストリの準備:リージョン別可用性」から確認できます
$ docker login <リージョンID>.ocir.io
上記コマンド実行後、UsernameとPasswordの入力画面が表示されます。以下の手順で、UsernamとPasswordを確認していきます。
Usernameの確認
Usernameはそれぞれ以下の形式で入力します。
- IAMユーザの場合:<テナンシーネームスペース>/<ユーザ名>
- IDCSユーザの場合:<テナンシーネームスペース>/oracleidentitycloudservice/<ユーザ名>
<テナンシーネームスペース>は、コンテナレジストリサービスに接続するユーザでOCI Webコンソールにログインした状態で、右上のユーザアイコンをクリックし、「プロファイル」内のテナンシーへ推移すると確認できます。
<ユーザ名>は、OCI Webコンソール右上のユーザアイコンをクリックすると確認できます。IDCSユーザの場合は、
上記のように、<テナンシーネームスペース>と<ユーザ名>の間に、「oracleidentitycloudservice」が必要です。
Passwordの確認
OCI Webコンソールの「アイデンティティとセキュリティ」>「ユーザー」へ推移し、コンテナレジストリサービスに接続するユーザを選択します。「リソース」>「認証トークン」の「認証トークンの生成」から、トークンを生成します。生成されたトークンがパスワードになります。
確認したユーザ名とパスワードを入力し、ログインに成功すると、「Login Succeeded」と表示されます。
例)※IDCSユーザの例
$ Username:<テナンシーネームスペース>/oracleidentitycloudservice/<ユーザ名>
$ Password:<生成したトークン>
Login Succeeded
次に、OCI上のコンテナレジストリに保存したいイメージのイメージIDを、以下のコマンドで確認します。
$ docker images
イメージIDの確認後、タグ付けをしていきます。
$ docker tag <イメージID> <リージョンID>.ocir.io/<テナンシーネームスペース>/<リポジトリ名>/<
イメージ名>:<タグ名>
- <リポジトリ名>:OCIのコンテナレジストリに保存する際のリポジトリ ※任意に指定
- <イメージ名>:OCIのコンテナレジストリに保存する際のイメージ名を指定
- <タグ名>:OCIのコンテナレジストリに保存する際のイメージにつけるタグを指定
タグ付けが行われているか、以下のコマンドで確認します。
$ docker images
最後に、以下のコマンドで、タグ付けしたイメージをOCIのコンテナレジストリに保存(Push)します。
$ docker push <リージョンID>.ocir.io/<テナンシーネームスペース>/<リポジトリ名>/<イメージ名>:<
タグ名>
権限が付与されているコンパートメント内のリポジトリに、イメージが追加されます。
リポジトリの編集権限がなく、イメージを保存できない場合はポリシーを修正してください。
任意のグループに所属するユーザにリポジトリの編集権限を付与する場合のポリシー構文例)
Allow group <任意のグループ名> to manage repos in tenancy
参考:OCI公式ドキュメント「リポジトリ・アクセスを制御するポリシー」
まとめ
今回はOCIのコンテナレジストリサービスを活用し、OCI上のプライベートリポジトリにイメージを保存(Push) しましたが、リポジトリからイメージを取得(Pull)することもできます。
次回以降で、OCIのContainer Engine for Kubernetes(OKE)について記事を書きたいと思います!
最後までお読みいただき、ありがとうございました。🙇
- カテゴリ:
- OCIサービス紹介