Docker: docker pull, wget, curl, git clone 等如何更快?

GoCodingInMyWay發表於2020-08-16

1) Docker 配置

1.1) daemon.json 配置映象

registry-mirrors 設定映象,加速 docker pull 官方映象。以下舉例為阿里源。

{
  "experimental": true,
  "features": { "buildkit": true },
  "registry-mirrors": ["https://<your token>.mirror.aliyuncs.com"]
}

1.2) config.json 配置代理

proxies 設定 HTTP, HTTPS 代理,加速如 wget, curl 等 HTTP 請求。

{
  "proxies": {
    "default": {
      "httpProxy": "http://192.168.1.100:7890",
      "httpsProxy": "http://192.168.1.100:7890",
      "noProxy": "localhost, 127.0.0.0/8, ::1"
    }
  }
}

如果沒有代理服務可用,可參考後文其他加速方式。

2) 其他加速方式

2.1) 包管理工具配置各自映象

apt pip 等,可以配置其各自的映象源。常用映象源,可見:

2.2) 程式碼倉庫映象到國內平臺

git clone 原倉庫太慢,可於國內程式碼託管站點(如 Gitee)上找下映象或自己匯入一份,然後 git clone 映象倉庫地址。

2.3) 預先下載檔案並使用

有些檔案只好直接下載,但太慢。或者檔案太大,每次下載太耗時。可以預先用其他工具或渠道下載好後再使用。

使用方式一: ADD/COPY

Dockerfile ADD/COPY 此檔案。但因為 ADD/COPY 會增加增加層級、映象變大,所以只建議用在不用刪除清理的檔案。而像安裝包等,不建議用此辦法。

這時,可以用 Docker 的多階段構建避免此問題,參見文件 Use multi-stage builds

但,這裡建議用方式二: HTTP Server 。

使用方式二: HTTP Server

啟用 HTTP 靜態檔案服務,方法可見這裡

這樣,仍依照 Dockerfile 最佳實踐, RUN 時 wget, curl 下載。只是改下下載地址,也可以把下載地址設成 ARG 引數。

結語

Go coding!

相關文章