我教你如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法
我教你如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法
一、介绍
最近,我在写有关使用 Jenkins 搭建企业级持续集成环境的文章,准备了四台服务器,企业级别嘛,一台就不是企业级别了。在这个过程中遇到了很多问题,也遇到了很多坑,也是凭着自己的不懈努力,每个问题都解决了。其中有一个问题就是,我要把 Net 5.0 的项目构建成镜像,我也为项目增加了 Dockerfile 文件,但是在险资微软官方镜像的时候非常慢,为了解决这个问题,我花费了一天多的时间,尝试每一种解决方法,很多都是行不通的。
功夫不负有心人,自己在找遍网络,还终于找到了解决办法,没别的,好东西就记录下来,以防自己下次需要的时候可以立刻找到。MCR(Miscrosoft Container Registry) 加速器,助你在中国大陆急速下载 netcore 相关的 docker 镜像。
二、解决办法。
1、如何使用
至少三种方法进行加速:
使用 docker-mcr (推荐)
拉取国内服务器上的镜像
使用 DockerHub 加速器
注意,无论采用什么方式,请先确保本地的 docker 已经正常可用。
2、使用 docker-mcr (推荐)
docker-mcr 是一个 dotnet core global tool,简单几步,便可以进行安装和使用。
进入 dotnet 页面,下载并安装 netcore 3.1 SDK 或者 Net 5.0,如果没有安装 SDK,是无法使用 dotnet 命令的。

安装完毕后打开控制台运行以下命令:#dotnet tool install newbe.mcrmirror -g
如果已经安装,会提示已经安装。

现在,假如需要拉取 mcr.microsoft.com/dotnet/aspnet:3.1-buster-slim ,则运行以下命令:#docker-mcr -i mcr.microsoft.com/dotnet/aspnet:3.1-buster-slim

等待完成之后,便可以在本地看到已经拉取完毕的镜像。

您可以运行 docker-mcr --help 来查看更多的参数配置方式。
命令:#docker-mcr --help

如果您曾经安装过 newbe.mcrmirror,您需要使用 dotnet tool update newbe.mcrmirror -g命令来进行升级,确保最佳的体验。
命令:#dotnet tool update newbe.mcrmirror -g

3、拉取国内服务器上的镜像
加速的本质是因为我将镜像推送到了国内的服务器,目前在以下服务器均存在镜像:
阿里云:registry.cn-hangzhou.aliyuncs.com/newbe36524
腾讯云:ccr.ccs.tencentyun.com/mcr_newbe36524
以下以阿里云为例进行说明,假设需要拉取 【aspnet:3.1-buster-slim】 和【sdk:3.1-buster】
则拼接上面的前缀,则得到地址【registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:3.1-buster-slim】 和【registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:3.1-buster】 。
然后,为了不修改默认的 Dockerfile 您可以运行以下命令:
1 3.1 版本
2
3 #docker pull registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:3.1-buster-slim
4 #docker tag registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:3.1-buster-slim mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim
5 #docker pull registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:3.1-buster
6 #docker tag registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:3.1-buster mcr.microsoft.com/dotnet/core/sdk:3.1-buster
ASP.NET 3.1 镜像


ASP.NET SDK 3.1 镜像


这样你就成功的在本地得到了 【mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim】和【mcr.microsoft.com/dotnet/core/sdk:3.1-buster】 镜像。
当然,你也可以直接把 【registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:3.1-buster-slim】和【registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:3.1-buster】 写入到你的 Docker file 中。
1 5.0 版本
2
3 #docker pull registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:5.0-buster-slim
4 #docker tag registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:5.0-buster-slim mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim
5
6
7 #docker pull registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:5.0-buster-slim
8 #docker tag registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:5.0-buster-slim mcr.microsoft.com/dotnet/core/sdk:5.0-buster-slim
ASP.NET 5.0 镜像



ASPNET SDK 5.0 镜像


这样你就成功的在本地得到了【mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim】 和 【mcr.microsoft.com/dotnet/core/sdk:5.0-buster-slim】 镜像。
当然,你也可以直接把 【registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:5.0-buster-slim】 和 【registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:5.0-buster-slim】写入到你的 Dockerfile 中。
4、使用 DockerHub 加速器(这个开始有点慢)
我也将镜像推送到了 DockerHub ,所以正常来说,在中国大陆使用 DockerHub 加速器也可以达到加速的效果。
规则,mcr.microsoft.com/dotnet/cre/{name}:{tag} -> newbe36524/{name}:{tag}
ASP.NET 3.1 镜像
【1】、命令:#docker pull newbe36524/aspnet:3.1-buster-slim

【2】、命令:#docker tag newbe36524/aspnet:3.1-buster-slim mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

【3】、命令:#docker images

1 #docker pull newbe36524/aspnet:3.1-buster-slim
2 #docker tag newbe36524/aspnet:3.1-buster-slim mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim
3 #docker pull newbe36524/sdk:3.1-buster
4 #docker tag newbe36524/sdk:3.1-buster mcr.microsoft.com/dotnet/core/sdk:3.1-buster
ASP.NET 3.1 镜像
【1】、命令:#docker pull newbe36524/sdk:3.1-buster

【2】、命令:#docker tag newbe36524/sdk:3.1-buster mcr.microsoft.com/dotnet/core/sdk:3.1-buster

【3】、命令:#docker images

这样你就得到了【mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim】和【mcr.microsoft.com/dotnet/core/sdk:3.1-buster】 镜像。当然,你也可以直接把 【newbe36524/aspnet:3.1-buster-slim】和【newbe36524/sdk:3.1-buster】 写入到你的 Dockerfile 中。在此之前,请确保你正确配置了本地的加速器。
三、结束
当我们在设计程序的时候,经常会出现问题或者叫是坑,我们很愤怒,但是,我们冷静下来,把问题解决的时候,又是一身轻松。细细思量,我们解决问题的过程也是进步的过程。最起码,在下次遇到同样的或者类似的问题,我们不至于手忙脚乱。每天进步一点点,不忘初心,继续努力。大家可以直接去Github 上查看原文,地址【https://github.com/newbe36524/Newbe.McrMirror】。
我教你如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法的更多相关文章
- 在Docker中使用Microsoft SQL Server数据库
下图中对SQL Server容器创建及数据库创建等操作进行了记录,方便自己日后查看.(文中的 * 仅表示隐藏自己的个人信息,手动马赛克,哈哈-) Docker下载可看上一篇博文mac系统,docker ...
- .Net Core:Docker无法拉取mcr.microsoft.com相关镜像解决办法
今天在教同事Docker简单部署Asp.Net Core项目,pull镜像时突然出现下图中的错误: 因为微软在 2018 年五月之后,只会将相关镜像打包发布到 MCR 上.但是 MCR 对国内用户不太 ...
- 解决 Docker Image的UTF-8中文字符集的问题(以Oracle为例)
最近因业务需要,需要搭建一个Oracle数据库,当然Oracle数据库支持Linux,但是在上面搭建很是复杂,所以我想起了Docker ,果然在上面发现了一个OracleDB的镜像,所以下载之,运行, ...
- 怎么解决docker pull拉取镜像速度过慢的问题
在我们安装了docker之后,在利用docker pull下载镜像的时候,由于国内的源会出现的问题就是速度真的很慢,可以用龟速来形容,最痛苦的是当你耐心的等待几个小时之后,出现unexpected E ...
- Docker下载Mysql 2059
接着我上一篇的,在我们安装好docker后我们尝试在docker里面安装mysql并连接使用 正式开始 1.启动docker 2.打开Windows PowerShell(执行下载命令) `docke ...
- 解决nexus下载maven索引的问题
解决nexus下载maven索引的问题 (2011-10-12 17:48:46) 转载▼ 标签: it 分类: java 转自 http://www.colorfuldays.org/program ...
- 解决Docker中运行的MySQL中文乱码
docker exec -it mysql bash 如果没有安装vim,请参考 解决Docker容器中不能用vim编辑文件 vim /etc/mysql/mysql.conf.d/mysql.cnf ...
- Docker系列(二)镜像下载、操作容器、镜像导入导出等操作
一.镜像操作 列出镜像 $sudo docker images 从dockerhub检索image $docker search image_name 下载image $docker pull ima ...
- Docker 下载镜像慢的问题解决方法
让你火箭般的速度下载docker镜像! 的冷漠度 百家号17-11-1713:09 因为有墙的原因所以在国内下载docker镜像的速度非常慢,有时候是几kb每秒,那个蛋疼的等待,真是谁等谁知道!下面我 ...
随机推荐
- Ubuntu命令集(持续更新)
Ubuntu命令集,生活工作汇总,没有顺序.(持续更新...) 1 pwd:没有参数,在终端现实我们当前所处的文件夹位置:ctrl+l:清除当前终端屏: 2 --------------------- ...
- Mysql 中的MDL
本文可以结合 MySQL中的事务原理和锁机制 查看. 首先简单了解一下 mysql 的 sql 类型: 1.数据定义语言 DDL:Create.Drop.Alter 操作.用于定义库和表结构的. 2. ...
- 机器学习-决策树之ID3算法
概述 决策树(Decision Tree)是一种非参数的有监督学习方法,它是一种树形结构,所以叫决策树.它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回 ...
- linux不同环境变量文件的比较,如/etc/profile和/etc/environment
/etc/profile 为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效. 当被修改时,必须重启才会生效.英文描述:"System w ...
- 5.innodb B+tree索引
索引基础 索引是数据结构 1.图例 2.B+tree 特征 1.非叶子节点不保存数据,只用来索引,数据都保存在叶子节点 2.查询任何一条数据,查询的索引深度都是一样的 3. B+ 树中各个页之间是通过 ...
- 在 xunit 测试项目中使用依赖注入
在 xunit 测试项目中使用依赖注入 Intro 之前写过几篇 xunit 依赖注入的文章,今天这篇文章将结合我在 .NET Conf 上的分享,更加系统的分享一下在测试中的应用案例. 之所以想分享 ...
- python使用smtplib和email库发送邮件
国内很多服务器提供商都默认禁止了smtp默认的25端口服务,而启用465端口发送邮件 在smtplib库中直接调用SMTP_SSL就是默认使用465端口 示例代码如下: def send_eamil( ...
- 页面中嵌套iframe,微信浏览器长按二维码识别不了
问题:在微信浏览器内,页面中嵌套iframe,iframe中用户触发事件后有个弹框会显示二维码,用户长按二维码可以识别并跳转.尝试了一下,安卓是正常的,但是ios是识别不了的. 解决过程: 1.这里客 ...
- JavaDailyReports10_17
学习JavaWeb第一天 输出我的第一个HelloWorld! 1 <%@ page language="java" import="java.util.*&quo ...
- [从源码学设计]蚂蚁金服SOFARegistry之服务上线
[从源码学设计]蚂蚁金服SOFARegistry之服务上线 目录 [从源码学设计]蚂蚁金服SOFARegistry之服务上线 0x00 摘要 0x01 业务领域 1.1 应用场景 1.1.1 服务发布 ...