コラム

[Docker]Azureの認証付きDocker Registryを使用

Dockerイメージを管理する、Docker Registryというものがありますが、以前、プライベートでのDocker Registryを立てる記事を書きましたが、その機能はAzureにも用意されています。
今回はAzureでの認証付きDocker Registryの利用を試してみたいと思います。

Azure側の設定

リソースグループの作成

まず適当なリソースグループを作成して下さい。既存のものがある場合はそれでも良いです。

コンテナレジストリの作成

Dockerのイメージを管理するレジストリになります。Azure Portalの画面から作成していきます。

コンテナレジストリ作成画面
コンテナレジストリ作成画面

グループ選択、レジストリ名、場所を入力、SKUはPremiumでないと認証機能が付かないようです。

コンテナレジストリ一覧

これで登録が完了しました。

認証・権限情報設定

認証と権限を設定するには、トークンとスコープマップというものを使う必要があります。

トークン一覧画面

作成ボタンを押下すると下記のトークン作成画面へ遷移します。

トークン作成画面
トークン作成画面

トークンにユーザIDを入力、今回はスコープマップには予め用意されている、「_repositories_admin」「_repositories_pull」、「_repositories_push」で3ユーザを作成します。
各スコープマップは以下の権限が付与されています。

_repositories_adminmetadata/read
metadata/write
content/read
content/write
content/delete
_repositories_pullcontent/read
_repositories_pushcontent/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を使用したい方の参考になれば幸いです。

この記事をシェアする
  • Facebookアイコン
  • Twitterアイコン
  • LINEアイコン

お問い合わせ ITに関するお悩み不安が少しでもありましたら、
ぜひお気軽にお問い合わせください

お客様のお悩みや不安、課題などを丁寧に、そして誠実にお伺いいたします。

お問い合わせ
お電話でのお問い合わせ 03-5820-1777(平日10:00〜18:00)
よくあるご質問