使用 Azure Container Registry 缓存 Docker Hub 镜像

这篇文章介绍如何使用 ACR (Azure Container Registry) 缓存 Docker Hub 和 GitHub Container Registry 的镜像。

详细步骤

  1. 登录 Azure portal
  2. Create a resource
  3. 搜索 Container Registry 并创建
  4. 大陆地区建议选择 East Asia (Hong Kong),Southeast Asia (Singapore) 或者 Japan East,其他随意
  5. 打开创建好的 Container Registry
  6. 展开左边的 Services,点 Cache
  7. Create rule 配置规则
    1. Rule name: dockerio
    2. Source: Docker Hub
    3. Repository path: docker.io/*
    4. New ACR repository namespace: dockerio/*
  8. 按需配置其他源,例如 ghcr.io/* -> ghcrio/*
  9. 如果你就在 Azure 的环境内用,或者可以用 Azure CLI 登录,例如 az acr login,就不用搞下面的 Token 了,直接去 Access Control (IAM) 配一下权限 (AcrPull) 就行了
  10. 展开左边的 Repository permissions,点 Token
  11. Add,Token (name) 写一个你能区分出来的名字,Scope 选 _repositories_pull
  12. password1 右边的 Actions 点一下就能生成一个 Token 出来用,同时还给你一条命令用于 Docker client 登录 ACR 用,一定要记住这个密码,关了之后就看不到了

镜像替换

全都弄完了并且让你的 Docker client 登录之后,按照你配置的规则进行镜像替换,比如按照我上面的规则

  1. library/redis:6.2 -> xxxxx.azurecr.io/dockerio/library/redis:6.2
  2. tensorchord/pgvecto-rs:pg14-v0.2.0 -> xxxxx.azurecr.io/dockerio/tensorchord/pgvecto-rs:pg14-v0.2.0

参考资料

  1. Choose the Right Azure Region for You | Microsoft Azure
  2. Artifact cache in Azure Container Registry