Help us understand the problem. What is going on with this article?

AKS を使いこなす : チュートリアルの深堀り - コンテナレジストリを作成する

今回はチュートリアル:Azure Container Registry をデプロイして使用するの深堀をしていきます。

このチュートリアルでは、前回ダウンロードしたアプリケーションのイメージを作成して、レジストリに登録するところまでをやっています。

イメージとコンテナ

OS などの実行環境と実行するアプリケーションを含んだものをとイメージと呼び、インスタンス化されてコンテナランタイムで実行されているものをコンテナと呼びます。コンテナというキーワードは技術全体をさす場合もあるため状況に応じて理解しましょう。

タグ

イメージのバージョニングはタグで行います。タグは以下のようにイメージの後につきます。

azure-vote-front:v1
azure-vote-front:v2
azure-vote-front:latest

タグを省略した場合、latest タグが自動的に付与され、最新のイメージが利用されます。

コンテナレジストリ

コンテナの元であるイメージは、実行環境でビルドするかダウンロードしてきます。コンテナレジストリはビルド済のイメージを保持するサービスで、以下のような機能を提供します。

  • イメージ本体およびタグなどのメタデータの保存
  • ダウンロード要求に対する応答
  • イメージ単位やユーザー単位に Readme の提供
  • ユーザーの認証や認可

Docker は既定で Docker Hub というパブリックのコンテナレジストリを利用します。イメージをプライベートに管理運用したい場合は、有料の Docker Hub の機能を使ったり、Azure Container Registry (ACR) などクラウドサービスを使うことになります。

ACR は Azure が提供するコンテナレジストリであり、Azure AD と統合されたセキュリティやモニタ機能を使える他、プレビューですが VNET に組み込んで使うなどエンタープライズ向けの機能を提供します。

チュートリアルの深堀

では実際にチュートリアルを見ていきましょう。

ACR の作成

まずコンテナレジストリである ACR を作成しています。ACR を作成するホストと SKU は任意で選択できますが、個人的には全てのリソースを日本に作成したいため、eastjapan を利用します。

1. 手順では azure-cli を使っているため、Azure CLI のインストールを参考にインストールを実施。

2. シェルを起動して Azure にログイン。ブラウザが起動するので認証を実行。

az login

3. サブスクリプションが複数ある場合は適切なものを設定。

az account list # サブスクリプション一覧を表示
az account set -s <subscription id> # 利用するサブスクリプションを指定
az account show # 利用するサブスクリプションの表示

4. リソースグループの作成。ここではリソースグループ名は akstutorial、リージョンは東日本を指定。

az group create --name akstutorial --location japaneast

5. ACR の作成。名前はグローバルで一意のものを指定。SKU についてはこちらより違いを参照。

az acr create -g akstutorial -n kenakamuacr --sku basic

6. 作成した ACR にログイン。

az acr login -n kenakamuacr

イメージの準備

次に ACR にアップロードするイメージを前回ダウンロードしたアプリケーションを使って作成します。各イメージは以下の属性を持っています。

  • レポジトリ名: イメージが格納されているレポジトリの名前
  • タグ: イメージのタグ
  • ID: イメージを一意に特定する ID

尚、同じイメージ ID に対して複数の名前やタグをつけることができます。

1. 現在ローカルにあるイメージを確認。前回のアプリケーションの状態のままであれば以下のように 3 つのイメージが存在。

docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
azure-vote-front             latest              f1056b864e11        10 hours ago        965MB
redis                        latest              63130206b0fa        11 days ago         98.2MB
tiangolo/uwsgi-nginx-flask   python3.6           b3b62e990e26        6 weeks ago         964MB

2. ACR のイメージは ACR のログインサーバー名/イメージ名:バージョン というタグの命名規則がある。まずは以下コマンドで ACR のログインサーバー名を取得。

  • az acr list で ACR 一覧を取得
  • query パラメーターで任意の値のみ取得
az acr list --resource-group akstutorial --query "[].{acrLoginServer:loginServer}" --output table
AcrLoginServer
----------------------
kenakamuacr.azurecr.io

3. azure-vote-front に対してタグを設定。以下の場合、レポジトリが kenakamuacr.azurecr.io/azure-vote-front、タグが v1 となる

docker tag azure-vote-front kenakamuacr.azurecr.io/azure-vote-front:v1

4. 再度イメージの一覧を取得。タグをつけたイメージが表示される。IMAGE ID が azure-vote-front の f1056b864e11 と一致しているため、実体は同じ。

docker images
REPOSITORY                                TAG                 IMAGE ID            CREATED             SIZE
azure-vote-front                          latest              f1056b864e11        11 hours ago        965MB
kenakamuacr.azurecr.io/azure-vote-front   v1                  f1056b864e11        11 hours ago        965MB
redis                                     latest              63130206b0fa        11 days ago         98.2MB
tiangolo/uwsgi-nginx-flask                python3.6           b3b62e990e26        6 weeks ago         964MB

ACR にイメージをプッシュ

最後に作成したイメージを ACR にプッシュ(アップロード)します。

1. docker push でイメージをプッシュ。タグより docker は自動的に ACR を検索してプッシュを実行。

docker push kenakamuacr.azurecr.io/azure-vote-front:v1

2. イメージをプッシュすると ACR にレポジトリが作成される。

az acr repository list --name kenakamuacr --output table 
Result
----------------
azure-vote-front

[ポータルから見た場合]
image.png

3. タグも確認。

az acr repository show-tags --name kenakamuacr --repository azure-vote-front --output table
Result
--------
v1

[ポータルから見た場合]
image.png

まとめ

今回は ACR の作成とイメージのプッシュまでやりました。次回は AKS クラスターを作成します。

次の記事へ
目次に戻る

参考

Azure Container Registry
Azure Container Registry SKU

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした