文章

国内无法拉取 Docker 镜像的解决方案

见字如面,与大家分享实践中的经验与思考。

2024 年 7 月份后,国内无法拉取 Docker 官方仓库的镜像,同时很多国内的镜像网站也无法使用,对于软件开发来说造成了很大的麻烦。

使用 Github Action 将国外的Docker镜像转存到阿里云私有仓库,供国内服务器使用,免费易用

  • 支持 DockerHub, gcr.io, k8s.io, ghcr.io 等任意仓库

  • 支持最大40GB的大型镜像

  • 使用阿里云的官方线路,速度快

  • 自定义配置想要同步的镜像 image ,方便快捷进行同步和使用

配置阿里云

登录阿里云容器镜像服务: https://cr.console.aliyun.com/

新建命名空间:

image-20240820135000743

设置固定密码:

设置好密码后,可以通过 docker login 进行登陆了。

image-20240820134544958

配置 Github Action 变量

image-20240820121528773

设置以下四个变量,在第一步配置阿里云就已经获取了,以下是样例:

- ALIYUN_REGISTRY:registry.cn-chengdu.aliyuncs.com <changeme>
- ALIYUN_NAME_SPACE: flyeric <changeme>
- ALIYUN_REGISTRY_USER: amuguelove1991 <changme>
- ALIYUN_REGISTRY_PASSWORD:xxx <changeme>

源代码查看:

flyeric0212/aliyun-docker-image-mirror (github.com)

可以直接 fork 项目,修改 images.txt 文件,替换成你想要 mirror 的 docker 镜像。

Github Action 运行

在 images.txt 中加入想要 mirror 镜像名称和版本号,提交代码后,github action 会进行自动构建。

image-20240820135354128

查看阿里云镜像

同步过后的镜像列表:

image-20240820134021900

查看对应镜像的版本列表,选择对于的版本进行 pull:

image-20240820134106804

本地登陆阿里云 Docker Registry 后,直接 docker pull 镜像即可。

image-20240820134209689

License:  CC BY 4.0