解决docker镜像pull失败的有效

机器环境

本实践将在 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 Size 7.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来同步镜像到私有的镜像库,比如阿里云;这个可以解决一些小镜像,大的镜像会导致太多问题。
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack_software

感谢打赏,我努力提供优质内容~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值