- 03-5820-1777平日10:00〜18:00
- お問い合わせ
Dockerイメージを管理する、Docker Registryというものがありますが、以前、プライベートでのDocker Registryを立てる記事を書きましたが、その機能はAzureにも用意されています。
今回はAzureでの認証付きDocker Registryの利用を試してみたいと思います。
リソースグループの作成
まず適当なリソースグループを作成して下さい。既存のものがある場合はそれでも良いです。
コンテナレジストリの作成
Dockerのイメージを管理するレジストリになります。Azure Portalの画面から作成していきます。
グループ選択、レジストリ名、場所を入力、SKUはPremiumでないと認証機能が付かないようです。
これで登録が完了しました。
認証・権限情報設定
認証と権限を設定するには、トークンとスコープマップというものを使う必要があります。
作成ボタンを押下すると下記のトークン作成画面へ遷移します。
トークンにユーザIDを入力、今回はスコープマップには予め用意されている、「_repositories_admin」「_repositories_pull」、「_repositories_push」で3ユーザを作成します。
各スコープマップは以下の権限が付与されています。
_repositories_admin | metadata/read metadata/write content/read content/write content/delete |
_repositories_pull | content/read |
_repositories_push | content/read content/write |
※スコープマップは自分で作成する事が出来ます。
3ユーザを作りました。次はパスワードの設定をしていきます。
パスワード設定
パスワードをユーザ事に生成します。
トークン一覧のトークン名を押下するとパスワードの状況の画面に遷移します。
ユーザ事に2つパスワードを設定できるみたいです。
password1又はpassword2を押下するとパスワード生成画面へ遷移します。
生成ボタンを押下するとパスワードが生成されます。
パスワードとログインコマンドが表示されます。この情報は管理しておきましょう。
後の確認の時に使用します。
各ユーザでログインしてローカルのPush、Pullの動作確認をしていきます。
今回はcentos7のPush、Pullをやって
登録処理コマンド
#ログイン、ログインしている場合はログアウトする
docker logout dockerregsample.azurecr.io
docker login -u {トークン名} -p {パスワード} dockerregsample.azurecr.io
#Docker HubからCenos7イメージを取得
docker pull centos:centos7
#イメージが取得できたか確認
docker images
#pushする為にイメージのタグ付け
docker tag centos:centos7 dockerregsample.azurecr.io/centos7
#pushする 成功すると以下の様な結果が出力されるはずです。
#The push refers to repository [dockerregsample.azurecr.io/centos7]
#174f56854903: Pushed
#latest: digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f size: 529
docker push dockerregsample.azurecr.io/centos7
登録されたイメージはコマンド又はAzure Portalから確認できます。以下はAzure Portalでの確認イメージです。
取得処理コマンド
#ログイン、ログインしている場合はログアウトする
docker logout dockerregsample.azurecr.io
docker login -u {トークン名} -p {パスワード} dockerregsample.azurecr.io
#ローカルにイメージがある場合は削除する
docker rmi -f {IMAGE_ID}
#削除されているか確認
docker images
#pull処理
docker pull dockerregsample.azurecr.io/centos7
#dockerイメージの確認。以下のようなイメージがあるはずです。
#dockerregsample.azurecr.io/centos7 latest eeb6ee3f44bd 4 months ago 204MB
docker images
#起動してみる
docker run -it -d --name centos7 dockerregsample.azurecr.io/centos7
#起動確認。以下のような出力があるはずです。
#52fb8ca2afb9 dockerregsample.azurecr.io/centos7 "/bin/bash" 9 seconds ago Up 9 seconds centos7
docker ps
各ユーザの処理結果
トークン | push(登録処理) | pull(取得処理) |
---|---|---|
admin(_repositories_admin) | 可 | 可 |
user01(_repositories_pull) | 不可 | 可 |
user02(_repositories_push) | 可 | 可 |
ログインしてない状態での処理、対応権限外での処理のエラーは以下のようなエラーが出力されます。
#未ログインエラー
Error response from daemon: Head "https://dockerregsample.azurecr.io/v2/centos7/manifests/latest": unauthorized: authentication required, visit https://aka.ms/acr/authorization for more information.
#権限エラー
errors:
denied: requested access to the resource is denied
unauthorized: authentication required, visit https://aka.ms/acr/authorization for more information.
以上、正常に機能している事が確認出来ました。
AzureでのDocker Registryを使用したい方の参考になれば幸いです。