.Net Core:Docker无法拉取mcr.microsoft.com相关镜像解决办法
今天在教同事Docker简单部署Asp.Net Core项目,pull镜像时突然出现下图中的错误:
因为微软在 2018 年五月之后,只会将相关镜像打包发布到 MCR 上。但是 MCR 对国内用户不太友好,以前只是慢点就忍了,现在直接超时就不能忍了。
在网上找了各种解决办法,有配置镜像加速器的,有改DNS地址的,统统不管用。
后面找到了下面两种方法,亲测可用。
一、使用 docker-mcr
docker-mcr是一位爱心人士做的加速器,打包成了dotnet工具,使用起来非常方便。
1、服务器安装了.net core3.1 sdk
我的服务器是Centos
,下面附上安装命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.1
2、安装docker-mcr
工具:
dotnet tool install newbe.mcrmirror -g
3、拉取镜像
docker-mcr
工具使用起来也非常简单:docker-mcr -i 镜像仓库:版本
,例如要拉取 mcr.microsoft.com/dotnet/aspnet:3.1
docker-mcr -i mcr.microsoft.com/dotnet/aspnet:3.1
二、通过阿里云容器镜像服务构建自己的镜像库
这种方法要比第一种方法稍微复杂一点。
1、在自己的Github新建一个仓库存放Dockerfile文件。
可以参考:https://github.com/dotnetboy/mcr-images
2、在阿里云开容器镜像服务,个人实例。
3、进到个人实例 — 镜像仓库 — 创建镜像仓库 — 绑定代码源(github)
4、进入镜像仓库 — 点击左边的构建 — 添加构建规则 — 立即构建
不出意外,等待30s左右后就会构建成功。
这个时候,你就可以去你自己的仓库地址拉取代码了。
这种方法虽然有点麻烦,但毕竟是自己的用着也放心一点。