0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure Container Registry (ACR) に Docker Hub からコンテナイメージを直接インポートしてみた

Posted at

背景と目的

docker build を何回もしてると Docker Hub のダウンロード率制限により 429 Too Many Requests エラーが発生して困ったことが何度かあります。そんな時は自前で立てたコンテナレジストリに手動でダウンロードしたコンテナイメージをプッシュしてから使う、という選択を皆さんもされるのではないかと思います。今回はわざわざコンテナイメージをダウンロードしなくても Azure Container Registry (ACR) に Docker Hub から直接インポートする方法があるので試してみました。

ACR の検証環境を作る

bash
# 環境変数をセットします
region=japaneast
prefix=mnracrdev

# リソースグループを作成します
az group create \
  --name ${prefix}-rg \
  --location $region

# ACR を作成します
az acr create \
  --resource-group ${prefix}-rg \
  --name ${prefix} \
  --sku Basic

Docker Hub の公式イメージをインポート

bash
# 公式イメージには docker.io/library/ をつけます
az acr import \
  --name ${prefix} \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest

# hello-world が登録されたか確認します
az acr repository list \
  --name ${prefix}

# hello-world のタグを確認します
az acr repository show-tags \
  --name ${prefix} \
  --repository hello-world

めちゃくちゃ便利で簡単ですね!

(参考)イメージのインポートを禁止するカスタムロール

自分の PC にコンテナイメージのダウンロードが必要ないということは、例えばインターネットとの境界にファイアウォールやプロキシなどで制限のある社内の開発環境でも ACR にアクセスして何かしらのデータを外部から持ち込んだりできそうです。そこで参考までに ACR のカスタムロールでインポートを禁止するサンプルも用意しておきたいと思います。

json
{
   "assignableScopes": [
     "/subscriptions/12345678-1234-1234-1234-123456789012"
   ],
   "description": "Custom ACR Role",
   "Name": "CustomAcrUser",
   "permissions": [
     {
       "actions": [
         "Microsoft.ContainerRegistry/registries/push/write",
         "Microsoft.ContainerRegistry/registries/pull/read",
         "Microsoft.ContainerRegistry/registries/read"
       ],
       "dataActions": [],
       "notActions": [
         "Microsoft.ContainerRegistry/registries/importImage/action"
       ],
       "notDataActions": []
     }
   ],
   "roleType": "CustomRole"
 }

検証環境を削除

bash
# リソースグループを削除します
az group delete \
  --name ${prefix}-rg \
  --yes

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?