提取已快取的 Docker Hub 映像檔

Artifact Registry 會在 mirror.gcr.io 上快取經常存取的公開 Docker Hub 映像檔。您可以設定 Docker Daemon,在有快取公開映像檔時使用該映像檔,或在沒有快取副本時從 Docker Hub 提取映像檔。

Google Cloud Cloud Build 和 Google Kubernetes Engine 等服務會先自動檢查快取映像檔,再嘗試從 Docker Hub 提取映像檔。

mirror.gcr.io 的快取圖片為:

  • 儲存在由 Google Cloud管理的存放區。
  • 不容易受到 Docker Hub 服務中斷影響。
  • 與 Google Cloud 生態系統整合。
  • 與 Docker Hub 保持同步。

設定 Docker Daemon

如要將 Docker Daemon 設定成從 Artifact Registry 快取提取映像檔,請按照下列步驟操作:

CLI

  1. 使用下列其中一種方式設定 Daemon:

    • 如要在啟動時自動設定 Docker Daemon,請在 /etc/docker/daemon.json 中設定下列值

      {
        "registry-mirrors": ["https://mirror.gcr.io"]
      }
      
    • 啟動 Daemon 時,傳入 Artifact Registry 主機名稱:

      dockerd --registry-mirror=https://mirror.gcr.io
      
    • /etc/default/docker 檔案中新增下列程式碼:

      DOCKER_OPTS="${DOCKER_OPTS} --registry-mirror=https://mirror.gcr.io"
      
  2. 重新啟動 Docker Daemon。

    • 在 Linux 中,執行下列任一指令:

      sudo service docker restart
      

      sudo service docker stop && sudo service docker start
      
    • 在 macOS 或 Windows 上執行下列指令:

      docker-machine restart
      

Docker UI

  1. 開啟 Docker 的 [Preferences] 選單。
  2. 按一下 [Daemon]
  3. 按一下 [Advanced]。在 JSON 欄位中,新增 registry-mirrors 鍵並設定 https://mirror.gcr.io 做為值:

    {
      "registry-mirrors" : [
        "https://mirror.gcr.io"
      ]
    }
    
  4. 按一下 [Apply & Restart]

如要確認快取設定是否正確,請執行下列指令:

docker system info

輸出內容應包含 Registry Mirrors,如下所示:

Containers: 2
 Running: 0
 Paused: 0
 Stopped: 2
Images: 2
Server Version: 17.03.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
...
Registry Mirrors:
 https://mirror.gcr.io

提取快取的映像檔

Artifact Registry 會將要求頻率較高的映像檔新增至快取,供日後的要求使用。不再受到要求的映像檔也會遭到定期移除。

將 Docker Daemon 設定為使用 Artifact Registry 快取後,當您使用 docker pull 指令提取公開 Docker Hub 映像檔時,Docker 會執行下列步驟:

  1. Docker Daemon 會檢查 Artifact Registry 快取,並擷取映像檔 (如果存在)。如果 Daemon 設定包含其他 Docker 鏡像,Daemon 會依序檢查每個鏡像,尋找映像檔的快取副本。
  2. 如果還是找不到映像檔,Docker Daemon 會從 Docker Hub 的正式存放區擷取映像檔。

提取已快取的映像檔不會計入 Docker Hub 頻率限制。不過,我們無法保證特定圖片會長時間保留在快取中。您只能透過設定 Docker Daemon,在 mirror.gcr.io 上取得快取的映像檔。

如要向 Docker Hub 驗證 mirror.gcr.io 未快取的映像檔,請使用 Artifact Registry 遠端存放區。遠端存放區支援 Docker Hub 的驗證機制。即使只使用公開映像檔,我們仍建議您向 Docker Hub 驗證,因為這樣可以提高下載速率限制。如要進一步瞭解 Docker Hub 下載速率限制,請參閱 Docker Hub 速率限制

注意事項

使用 Artifact Registry Docker Hub 快取時,請注意下列事項:

  • Artifact Registry 僅做為您儲存在 Docker Hub 上的映像檔快取。 Google Cloud 不會驗證、掃描或修復從 Docker Hub 快取的映像檔中的安全漏洞。您有責任確保儲存在 Docker Hub 的映像檔符合貴機構的安全性和法規遵循規定。如需主動掃描安全漏洞,請考慮使用 Artifact Analysis

  • Artifact Registry 快取旨在提升穩定性,因此從 Docker Hub 移除映像檔後,不會立即清除映像檔。從 Docker Hub 刪除的映像檔可能會在 Artifact Registry 快取中保留幾天,然後才會從快取中移除。 Google Cloud 預先設定快取使用量的服務 (例如 Cloud Build 和 Google Kubernetes Engine) 可能會繼續自動使用 Artifact Registry 快取中未清除的映像檔。

後續步驟