当前位置: 首页 > news >正文

docker 镜像下载的另一种方式

目前下载docker大家都是用proxy方式去下载,由于什么原因都懂,这里不讨论
用proxy下载方式就变成是这样,以 dockerpull.cn为例:


docker pull dockerpull.cn/nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
​​​​​​​docker tag dockerpull.cn/nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04

但并不是每次都那么幸运,要更换不同代理来来回回下载,
那么为了方便更好的下载,这里整理了一些proxy,并整理成 dockerpull 脚本,逻辑是一样,你可以这样使用,使用过程比原来的方式少输入一个空格即可:
如:

本应该这样拉:

docker pull nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04

现在你可以这样拉

dockerpull nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04


这样我找了一些现有已知的proxy,如你有发现新的,也可手动加上:


# 定义镜像源列表
MIRROR_LIST=(
    "dockerproxy.net"
    "cr.laoyou.ip-ddns.com"
    "docker.1panel.live"
    "image.cloudlayer.icu"
    "hub.fast360.xyz"
    "docker-0.unsee.tech"
    "docker.1panelproxy.com"
    "docker.tbedu.top"
    "dockerpull.cn"
    "docker.m.daocloud.io"
    "hub.rat.dev"
    "docker.kejilion.pro"
    "docker.hlmirror.com"
    "docker.imgdb.de"
    "docker.melikeme.cn"
    "ccr.ccs.tencentyun.com"
    "pull.loridocker.com"
    "docker.sunzishaokao.com"
    "dockerhub.icu"
    "docker.wanpeng.top"
    "docker.anyhub.us.kg"
    "docker.fxxk.dedyn.io"
)


废话不说,上dockerpull脚本,自行保存为dockerpull,并chmod +x dockerpull:

#!/bin/bash


# 检查是否提供了镜像名称参数
if [ -z "$1" ]; then
    echo "Usage: $0 <image_name:tag>"
    exit 1
fi

# 定义镜像源列表
MIRROR_LIST=(
    "dockerproxy.net"
    "cr.laoyou.ip-ddns.com"
    "docker.1panel.live"
    "image.cloudlayer.icu"
    "hub.fast360.xyz"
    "docker-0.unsee.tech"
    "docker.1panelproxy.com"
    "docker.tbedu.top"
    "dockerpull.cn"
    "docker.m.daocloud.io"
    "hub.rat.dev"
    "docker.kejilion.pro"
    "docker.hlmirror.com"
    "docker.imgdb.de"
    "docker.melikeme.cn"
    "ccr.ccs.tencentyun.com"
    "pull.loridocker.com"
    "docker.sunzishaokao.com"
    "dockerhub.icu"
    "docker.wanpeng.top"
    "docker.anyhub.us.kg"
    "docker.fxxk.dedyn.io"
)
# 用户输入的目标镜像名称
USER_INPUT_IMAGE="$1"

# 判断是否需要添加 library/ 前缀
if [[ "$USER_INPUT_IMAGE" != */* ]]; then
    TARGET_IMAGE="library/$USER_INPUT_IMAGE"
else
    TARGET_IMAGE="$USER_INPUT_IMAGE"
fi

# 提取镜像名和标签
IMAGE_NAME=$(echo "$TARGET_IMAGE" | sed 's/library\///' | sed 's/:.*//')
IMAGE_TAG=$(echo "$TARGET_IMAGE" | sed 's/.*://')


# 遍历镜像源列表
for MIRROR in "${MIRROR_LIST[@]}"; do
    echo "Trying to pull image from $MIRROR..."
    # 拉取镜像
    docker pull "$MIRROR/$IMAGE_NAME:$IMAGE_TAG"
    
    if [ $? -eq 0 ]; then
        echo "Successfully pulled image from $MIRROR/$IMAGE_NAME:$IMAGE_TAG"
        # 将镜像标签改回原始的 Docker Hub 标签
        docker tag "$MIRROR/$IMAGE_NAME:$IMAGE_TAG" "$TARGET_IMAGE"
        echo "Tagged image as $TARGET_IMAGE"
        # 删除临时镜像
        docker rmi "$MIRROR/$IMAGE_NAME:$IMAGE_TAG"
        echo "Removed temporary image $MIRROR/$IMAGE_NAME:$IMAGE_TAG"
        exit 0
    else
        echo "Failed to pull image from $MIRROR/$IMAGE_NAME:$IMAGE_TAG. Trying next mirror..."
    fi
done

echo "Failed to pull image from all mirrors."
exit 1

http://www.dtcms.com/a/100579.html

相关文章:

  • 简易指南“<em >快</em><em>3</em><em>倍</em><em>投</em><em>规</em><em>划
  • C++第13届蓝桥杯省b组习题笔记
  • 自动化工作流工具的综合对比与推荐
  • 自定义类型:结构体(1)
  • 在 Qt 创建项目时,Qt Quick Application (Compat) 和 Qt Quick Application
  • 5种特效融合愚人节搞怪病毒
  • 深入解析C#中的解释器模式:原理与应用
  • C语言:多线程
  • 《Python实战进阶》第39集:模型部署——TensorFlow Serving 与 ONNX
  • C--操作符
  • AI人工智能-PyCharm的介绍安装应用
  • Vue学习笔记集--defineExpose
  • CSP-J 2019 入门级 第一轮(初赛) 完善程序(2)
  • 协程 Coroutine
  • 综合实验一
  • Arduino示例代码讲解:Virtual Color Mixer 虚拟混色器
  • CS提取的基本使用和模块加载
  • 树莓派超全系列文档--(14)无需交互使用raspi-config工具其一
  • 记录vite-plugin-dts打包时无法生成 .d.ts文件问题
  • Numpy常见bug
  • 定时器的定义
  • linux用户组和用户
  • MyBatis复杂查询——一对一、一对多
  • AF3 FeaturePipeline类解读
  • 经典动态规划问题:爬楼梯的多种解法详解
  • 基于大模型的知识图谱搜索的五大核心优势
  • 每日c/c++题 备战蓝桥杯(二分答案模版)
  • 函数指针在C++遍历函数中的写法和应用(直接在函数中定义函数指针)。
  • Python调用手机摄像头检测火焰烟雾的三种方法
  • python定时调度升级