機器環境
本實踐將在 Ubuntu 22.04.3LTS 系統上進行測試
docker 版本Docker Engine - Community 24.0.6
,原則上docker版本無影響
本實踐進僅學習研究使用,無作他用途。
背景
曾幾何時,docker鏡像的拉去會失敗,網速會慢,那會我們的通常處理方案是鏡像加速。如今,鏡像加速已經失效,我們如何解決?
本文將介紹一種解決方案的詳細步驟,同時給出其他方案。
方案一:
此方案需要你有一臺可以正常訪問官方鏡像的服務器。
情況一,鏡像很小比如 ubuntu:latest , 服務器磁盤夠用
# 服務器上備份 , 服務器通過為特殊的私有網絡
docker save -o ubuntu.tar ubuntu:latest
# 恢復到目標服務器 , 目標服務器通常為研發環境正常網絡
docker load -i ubuntu.tar
情況二,鏡像比較大,實力不允許,我的磁盤剩余有 32G
我用第一種方法竟然不能保存
pytorch/pytorch:1.9.0-cuda11.1-cudnn8-devel
Compressed Size7.54 GB
安裝 Skopeo
各平臺安裝方法參考
https://github.com/containers/skopeo/blob/main/install.md
# Ubuntu 20.10 and newer
sudo apt-get -y update
sudo apt-get -y install skopeo# 目前最新版本 1.15.1
skopeo -v
# skopeo version 1.4.1
測試了下目前版本夠用,就沒折騰安裝最新版本了。
保存鏡像以及恢復鏡像
# 保存鏡像
skopeo copy --retry-times=16 docker://pytorch/pytorch:1.9.0-cuda11.1-cudnn8-devel docker-archive:pytorch-1.9.0-cuda11.1-cudnn8-devel.tar:pytorch/pytorch:1.9.0-cuda11.1-cudnn8-devel# 看了下大小,比官網壓縮的大了好多好多,怪不得 16*2 = 32G 不夠
du -sh pytorch-1.9.0-cuda11.1-cudnn8-devel.tar
16G pytorch-1.9.0-cuda11.1-cudnn8-devel.tar# 恢復鏡像
docker load -i pytorch-1.9.0-cuda11.1-cudnn8-devel.tar
# 或
skopeo copy docker-archive:pytorch-1.9.0-cuda11.1-cudnn8-devel.tar docker-daemon:pytorch/pytorch:1.9.0-cuda11.1-cudnn8-devel
方案二 (由于第一個方案解決了我的問題,沒有進行測試)
阿里出品
image-syncer
鏡像同步工具 , 參考網站https://github.com/AliyunContainerService/image-syncer
image-syncer 是一個容器鏡像同步工具,可用來進行多對多的鏡像倉庫同步,支持目前絕大多數主流的 docker 鏡像倉庫服務
image-syncer
image-syncer
是一個容器鏡像同步工具,可用來進行多對多的鏡像倉庫同步,支持目前絕大多數主流的 docker 鏡像倉庫服務
Features
- 支持多對多鏡像倉庫同步
- 支持基于 Docker Registry V2 搭建的鏡像倉庫服務 (如 Docker Hub、 Quay、 阿里云鏡像服務 ACR、 Harbor 等)
- 同步過程只經過內存和網絡,不依賴磁盤存儲,同步速度快
- 自動增量同步, 自動忽略已同步且不需要修改的鏡像
- 支持鏡像層級別的并發同步,可以通過配置文件調整并發數(可以理解為同一時間在同步的鏡像層數量上限)
- 自動重試失敗的同步任務,可以解決大部分鏡像同步中的偶發問題(限流、網絡抖動),支持重試次數配置
- 簡單輕量,不依賴 docker 以及其他程序
其他方案
- 用github的workflow來同步鏡像到私有的鏡像庫,比如阿里云;這個可以解決一些小鏡像,大的鏡像會導致太多問題。