我教你如何解決 Docker 下載 mcr.microsoft.com 鏡像慢的辦法

                               我教你如何解決 Docker 下載 mcr.microsoft.com 鏡像慢的辦法git

1、介紹github

    最近,我在寫有關使用 Jenkins 搭建企業級持續集成環境的文章,準備了四臺服務器,企業級別嘛,一臺就不是企業級別了。在這個過程當中遇到了不少問題,也遇到了不少坑,也是憑着本身的不懈努力,每一個問題都解決了。其中有一個問題就是,我要把 Net 5.0 的項目構建成鏡像,我也爲項目增長了 Dockerfile 文件,可是在險資微軟官方鏡像的時候很是慢,爲了解決這個問題,我花費了一天多的時間,嘗試每一種解決方法,不少都是行不通的。
    功夫不負有心人,本身在找遍網絡,還終於找到了解決辦法,沒別的,好東西就記錄下來,以防本身下次須要的時候能夠馬上找到。MCR(Miscrosoft Container Registry) 加速器,助你在中國大陸急速下載 netcore 相關的 docker 鏡像。

2、解決辦法。

    一、如何使用

      至少三種方法進行加速:
        使用 docker-mcr (推薦)
        拉取國內服務器上的鏡像
        使用 DockerHub 加速器docker

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

    二、使用 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
      

網絡

    三、拉取國內服務器上的鏡像阿里雲

      加速的本質是由於我將鏡像推送到了國內的服務器,目前在如下服務器均存在鏡像:

            阿里雲: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 您能夠運行如下命令:

spa

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 中。


    四、使用 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

            

3d

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-bustercode


      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 中。在此以前,請確保你正確配置了本地的加速器。

3、結束
    當咱們在設計程序的時候,常常會出現問題或者叫是坑,咱們很憤怒,可是,咱們冷靜下來,把問題解決的時候,又是一身輕鬆。細細思量,咱們解決問題的過程也是進步的過程。最起碼,在下次遇到一樣的或者相似的問題,咱們不至於手忙腳亂。天天進步一點點,不忘初心,繼續努力。你們能夠直接去Github 上查看原文,地址【https://github.com/newbe36524/Newbe.McrMirror】。

相關文章
相關標籤/搜索