はじめに
Azure 上の各サービスでコンテナーを実行させるためには、コンテナー レジストリが必要となります。Azure では、カスタムのイメージを格納するためのプライベート コンテナー レジストリとして、Azure Container Registry が提供されています。
ここでは、Azure Portal で Azure Container Registry をセットアップし、WSL2 上の docker CLI からカスタムイメージを push する方法を説明します。
前提条件
- WSL2 をインストール
- セットアップは、Microsoft ストア版 WSL(Windows Subsystem for Linux) インストール を参照ください。
- WSL2 へ Docker をインストール
- セットアップは、WSL2 に Docker をインストールする を参照ください。
- カスタム イメージ
- WSL2 上の Docker にカスタム イメージが必要です。Visual Studio 2022 で開発した Web アプリのコンテナーイメージをビルドする場合は、Visual Studio 2022 + WSL2 + Docker で ASP.NET Core Web アプリのリモート デバッグ環境構築 を参照ください。
- Azure 環境
- Azure Container Registry を構築するために必要です。
Azure Container Registry のセットアップ
Azure Portal を起動します。[リソースの作成] で、"Container Registry" を検索して、[Container Registry] - [作成] を選択します。
[コンテナーレジストリの作成] で各種項目を入力し、[確認および作成] - [作成] を選択します。
[レジストリ名]: <入力した値>.azurecr.io
がレジストリの名前になります。docker login, docker push で、このレジストリ名を使用します。
[SKU]: [Basic]、[Standard]、[Premium] から選択します。上位の SKU ほど、ディスク容量、帯域幅のスペックが上がります。作成後に、SKU を変更することもできます。
[設定] - [アクセス キー] を選択します。[管理者ユーザー] を [有効] にします。
この画面の [ログイン サーバー]、[ユーザー名]、[Password] は、以降の手順で使用するので、参照できるようにしておいてください。
Azure Container Registry へイメージを push
WSL 側から、docker images
コマンドでローカルのイメージを一覧します。
Azure Container Registry へプッシュしたいイメージの "IMAGE ID" を確認してください。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hiromasa/netcorewebapp001 latest ac25818306de 36 hours ago 217MB
docker tag <IMAGE ID> <新しいイメージ名>
コマンドで、新しいイメージ名を追加します。
には、プッシュしたいイメージの "IMAGE ID" を指定します。
<新しいイメージ名> には、<ログイン サーバー名>/<任意のイメージ名> を指定します。
$ docker tag ac25818306de azconreg001.azurecr.io/netcorewebapp001
docker images
コマンドでイメージを一覧します。同じ "IMAGE ID" で新しいイメージ名が追加されていることを確認します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
azconreg001.azurecr.io/netcorewebapp001 latest ac25818306de 36 hours ago 217MB
hiromasa/netcorewebapp001 latest ac25818306de 36 hours ago 217MB
docker login <ログイン サーバー名>
で、Azure Container Registry にログインします。
Username には、Azure Container Registry の [アクセス キー] 画面の [ユーザー名]、Password には、同画面の [password] を指定します。
$ docker login azconreg001.azurecr.io
Username:
Password:
...
Login Succeeded
docker push <イメージ名>
で、Azure Container Registry にイメージを push します。
<イメージ名> には、Azure Container Registry のログイン サーバー名を先頭に付与したイメージ名を指定します。
$ docker push azconreg001.azurecr.io/netcorewebapp001
Using default tag: latest
The push refers to repository [azconreg001.azurecr.io/netcorewebapp001]
...
Azure Container Registry での確認
Azure Portal 側の [サービス] - [リポジトリ] を選択し、リポジトリの一覧に、push したイメージが表示されていることを確認します。
まとめ
Azure Container Registry へカスタム イメージを push する方法を説明しました。これで、クラウド経由で、カスタム イメージを参照できるようになります。