App Service on Linux の Docker 対応や Azure Container Service ではリポジトリが必須なので Docker Hub などを使うわけですが、今回はプレビューで公開されたばかりの Azure Container Registry を使ってみます。
Azure Container Registry の課金体系はイメージを保存している Blob のサイズと転送量という、変わらず使った分だけなので、プライベートリポジトリのために Docker Hub を契約するより安くなりそうです。
ポータルから名前などを入力すれば簡単に作れます。ストレージは安心と信頼の Blob なので心配無用です。
今のところは West US / East US / South Central US でしか使えません。Admin user を有効にしておけば Azure Active Directory の Service Princial を使わない認証が行えます。
アカウント管理を AAD で行えるのは利点だと思いますが、簡単に試す場合は Admin user でいいと思います。
作成が終わるとポータルから ACR へのアクセスに必要な情報が確認できます。
これまで検証に使ってきた Windows Containers のイメージを試しに push してみました。まずは docker login を実行して ACR の認証情報を設定します。
docker login shibayan-on.azurecr.io -u shibayan -p p@ssw0rd
ログインに成功したら、ACR に push したいイメージにタグを付けます。この時にタグ名のプリフィックスとして ACR のホスト名を付ける必要があるので少し注意が必要です。
docker tag aspnet-sample shibayan-on.azurecr.io/aspnet-sample
タグを付けてしまえば、あとは docker push を実行するだけです。
docker push shibayan-on.azurecr.io/aspnet-sample
今回試したのは Windows Server Core ベースのイメージだったのでサイズがどうなるのか気になっていましたが、ちゃんと差分だけ転送されたので時間はさほどかかりませんでした。
ちなみに docker logout shibayan-on.azurecr.io を実行して、認証情報を消してから docker pull を行うと認証エラーにちゃんとなります。
認証が必要ないリポジトリは作れないようなので、そういう場合には Docker Hub を使いつつ、プライベートなリポジトリは Azure Container Registry に寄せておけば幸せになれそうです。
Docker とは関係ないですが、裏側は Append Blob を使ってリポジトリを保存しているみたいです。
自分で Docker Registry を立ち上げるよりも簡単ですし、ストレージと転送量以外に追加費用も発生しないみたいなので使っていきたいと思いました。
そろそろ Azure Container Service の Windows 対応が来てほしいです。