docker-mcr 助您全速下載 dotnet 鏡像

  • 2020 年 6 月 17 日
  • 筆記

2018 年五月之後,微軟將後續發布的所有 docker image 都推送到了 MCR (Miscrosoft Container Registry),但在中國大陸,它的速度實在是令人髮指,本文將介紹一種方法來解決這個問題。

如何使用

 

下載方式

下載方式

 

存在至少三種方法進行加速:

  • 使用 docker-mcr (推薦)
  • 拉取中國伺服器上的鏡像
  • 使用 DockerHub 加速器

注意,無論採用什麼方式,請先確保本地的 docker 已經正常可用。

使用 docker-mcr

docker-mcr 是一個 dotnet core global tool,簡單幾步,便可以進行安裝和使用。

進入dotnet頁面,下載並安裝 netcore 3.1 SDK

安裝完畢後打開控制台運行以下命令:

dotnet tool install newbe.mcrmirror -g

 

現在,假如需要拉取 mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim ,則運行以下命令:

docker-mcr -i mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

 

等待完成之後,便可以在本地看到已經拉取完畢的鏡像。

當然,還有更多操作:

下載多個鏡像。:

docker-mcr --image mcr.microsoft.com/dotnet/core/sdk:3.1,mcr.microsoft.com/dotnet/core/runtime:3.1

 

從騰訊雲下載:

docker-mcr --mirror-host tencentyun --image mcr.microsoft.com/dotnet/core/sdk:3.1

 

從自定義的伺服器下載:

docker-mcr --mirror-host registry.cn-hangzhou.aliyuncs.com --image mcr.microsoft.com/dotnet/core/sdk:3.1 --mirror-namespace newbe36524

 

如果您曾經安裝過 newbe.mcrmirror ,您需要使用以下命令來進行升級,確保最佳的體驗。

dotnet tool update newbe.mcrmirror -g

 

拉取中國伺服器上的鏡像

加速的本質是因為我將鏡像推送到了中國的伺服器,目前在以下伺服器均存在鏡像:

  • 阿里雲 registry.cn-hangzhou.aliyuncs.com/newbe36524
  • 騰訊雲 ccr.ccs.tencentyun.com/mcr_newbe36524

以下以阿里云為例進行說明,假設需要拉取 aspnet:3.1-buster-slim

則拼接上面的前綴,則得到地址 registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:3.1-buster-slim

然後,為了不修改默認的 Dockerfile 您可以運行以下命令:

 
docker pull registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:3.1-buster-slim
docker tag newbe36524/aspnet:3.1-buster-slim mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

 

這樣你就成功的在本地得到了 mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim 鏡像。

當然,你也可以直接把 registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:3.1-buster-slim 寫入到你的 Docker file 中。

使用 DockerHub 加速器

我也將鏡像推送到了 dockerhub ,所以正常來說,在中國大陸使用 dockerhub 加速器也可以達到加速的效果。

規則,mcr.microsoft.com/dotnet/core/{name}:{tag} -> newbe36524/{name}:{tag}

例如,您可以運行以下命令:

 

docker pull newbe36524/aspnet:3.1-buster-slim
docker tag newbe36524/aspnet:3.1-buster-slim mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

 

這樣你就成功的在本地得到了 mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim 鏡像。

當然,你也可以直接把 newbe36524/aspnet:3.1-buster-slim 寫入到你的 Docker file 中。

在此之前,請確保你正確配置了本地的加速器。

起因經過

將微軟發布在 MCR 上的鏡像同步到 DockerHub 上,以加速中國大陸的下載速度。

正如我們所知,微軟在2018年五月之後,只會將相關鏡像打包發布到 MCR 上。

但是,在中國大陸從 MCR 上拉取鏡像簡直慢得讓人髮指。

MCR 團隊已經決定嘗試一些方案為此提速,相關的討論羅列在這個issue中。我也將會持續跟蹤這個issue。

程式碼倉庫

docker-mcr 以及 Github Action 相關的程式碼都在以下倉庫中,如果您在使用中遇到了任何問題,可以通過 issue 進行回饋:

最後,但是最重要

最近作者正在構建以反應式Actor模式事件溯源為理論基礎的一套服務端開發框架。希望為開發者提供能夠便於開發出「分散式」、「可水平擴展」、「可測試性高」的應用系統——Newbe.Claptrap

此次的加速工具實際上是筆者在編寫樣例時遇到下載困難時編寫的工具。

本篇文章是該框架的一篇技術選文,屬於技術構成的一部分。如果讀者對該內容感興趣,歡迎轉發、評論、收藏文章以及項目。您的支援是促進項目成功的關鍵。

當前項目已經快要發布 0.2 alpha 版本,歡迎參與討論。

GitHub 項目地址://github.com/newbe36524/Newbe.Claptrap

Gitee 項目地址://gitee.com/yks/Newbe.Claptrap

來源: newbe
文章作者: newbe36524
本文章著作權歸作者所有,任何形式的轉載都請註明出處。