OCIのコンテナレジストリサービス

 2021.07.01  株式会社テリロジー 技術統括部

こんにちは!テリロジーのY.Tです。
今回はOracle Cloud Infrastructure Registry(OCIR)について、ご紹介していきます。

Oracle Cloud Infrastructure Registry(OCIR)(以下、OCIのコンテナレジストリサービス)は、
Dockerリポジトリが構築可能なサービスで、Dockerイメージの格納、また、
共有することができます。作成したリポジトリは、インターネットに公開するパブリックリポジトリ、もしくはプライベートリポジトリとして利用することができます。

Dockerとは

Dockerとは、ホストOS上でコンテナと呼ばれる仮想的な区間を作成する、仮想化技術の1つです。
仮想化技術は、ホスト型仮想化、ハイパーバイザー型仮想化、コンテナ型仮想化の3つに分類することができます。
コンテナ型は、ホストOS上にDockerエンジンを構築するだけで、各コンテナを動かすことができます。

Dockerとは

Dockerの仕組み

各コンテナはコンテナイメージをもとに作成されます。コンテナイメージは、環境構築に必要なコマンドやパッケージがセットになっているものです。
通常、WordPressを構築する際には、コマンドを実行し、必要なパッケージをインストールする作業が必要に なります。しかし、1つのサーバ上にDockerエンジンを構築し、Dockerのコマンドを使って、WordPressの コンテナイメージを取得し、実行することで、構築に必要なパッケージを個別にインストールせずに、簡単にWordPressを構築することができます。

また、以下の図のように、コンテナイメージはコンテナリポジトリと呼ばれる箱の中にあります。コンテナリポジトリには、ユーザ同士でイメージを共有できるDocker Hubや、今回の記事でご紹介するOCIのコンテナレジストリサービスがあります。
自ら作成したコンテナイメージを、コンテナリポジトリに保存(Push)することもできます。

Dockerの仕組み

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/<テナンシーネームスペース>/<リポジトリ名>/<イメージ名>:< タグ名>

権限が付与されているコンパートメント内のリポジトリに、イメージが追加されます。

OCIのコンテナレジストリサービスへイメージを保存(Push)

Tips!

リポジトリの編集権限がなく、イメージを保存できない場合はポリシーを修正してください。
任意のグループに所属するユーザにリポジトリの編集権限を付与する場合のポリシー構文例)
Allow group <任意のグループ名> to manage repos in tenancy
参考:OCI公式ドキュメント「リポジトリ・アクセスを制御するポリシー」

まとめ

今回はOCIのコンテナレジストリサービスを活用し、OCI上のプライベートリポジトリにイメージを保存(Push) しましたが、リポジトリからイメージを取得(Pull)することもできます。
次回以降で、OCIのContainer Engine for Kubernetes(OKE)について記事を書きたいと思います!

最後までお読みいただき、ありがとうございました。🙇


RECENT POST「OCIサービス紹介」の最新記事


OCIサービス紹介

テリロジーが提供しているOCIの4つのサービス

OCIサービス紹介

Oracle FunctionsのスクリプトをAPIGW経由で確認 Part1

OCIサービス紹介

Oracle FunctionsのスクリプトをAPIGW経由で確認 Part2

OCIサービス紹介

OCIのDNSサービス

OCIのコンテナレジストリサービス