· 

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

こんにちは!テリロジーのY.Tです。

今回はOracle Cloud Infrastructure Registry(OCIR)について、ご紹介していきます。

 

Oracle Cloud Infrastructure Registry(OCIR)(以下、OCIのコンテナレジストリサービス)は、

Dockerリポジトリが構築可能なサービスで、Dockerイメージの格納、また、

共有することができます。作成したリポジトリは、インターネットに公開するパブリックリポジトリ、もしくはプライベートリポジトリとして利用することができます。

 

 

目次:

1.Dockerとは

2.Dockerの仕組み

3.Docker Hubからイメージを取得(Pull)

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

1.Dockerとは

Dockerとは、ホストOS上でコンテナと呼ばれる仮想的な区間を作成する、仮想化技術の1つです。

仮想化技術は、ホスト型仮想化、ハイパーバイザー型仮想化、コンテナ型仮想化の3つに分類することができます。

コンテナ型は、ホストOS上にDockerエンジンを構築するだけで、各コンテナを動かすことができます。

2.Dockerの仕組み

各コンテナはコンテナイメージをもとに作成されます。コンテナイメージは、環境構築に必要なコマンドやパッケージがセットになっているものです。

通常、WordPressを構築する際には、コマンドを実行し、必要なパッケージをインストールする作業が必要に

なります。しかし、1つのサーバ上にDockerエンジンを構築し、Dockerのコマンドを使って、WordPressの

コンテナイメージを取得し、実行することで、構築に必要なパッケージを個別にインストールせずに、簡単にWordPressを構築することができます。

 

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

自ら作成したコンテナイメージを、コンテナリポジトリに保存(Push)することもできます。

 

3.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

 

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

 

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

Tips!

リポジトリの編集権限がなく、イメージを保存できない場合はポリシーを修正してください。
任意のグループに所属するユーザにリポジトリの編集権限を付与する場合のポリシー構文例)
Allow group <任意のグループ名> to manage repos in tenancy 

参考:OCI公式ドキュメント「リポジトリ・アクセスを制御するポリシー」

まとめ

今回はOCIのコンテナレジストリサービスを活用し、OCI上のプライベートリポジトリにイメージを保存(Push)

しましたが、リポジトリからイメージを取得(Pull)することもできます。

次回以降で、OCIのContainer Engine for Kubernetes(OKE)について記事を書きたいと思います!

 

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