docker镜像下载的另一种方式(实测有效!)

 更新时间:2025年05月17日 11:49:06   作者:谢平康  
在Docker中下载镜像是一个关键步骤,因为镜像是容器运行的基础这篇,文章主要给大家介绍了关于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

到此这篇关于docker镜像下载的另一种方式的文章就介绍到这了,更多相关docker镜像下载方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker中的link和network网络互连问题

    docker中的link和network网络互连问题

    这篇文章主要介绍了docker中的link和network网络互连问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Docker在WSL环境下启动失败的问题解决办法

    Docker在WSL环境下启动失败的问题解决办法

    在Windows系统上,有时候我们可能会遇到Docker启动失败的问题,特别是在使用WSL(Windows Subsystem for Linux)作为Docker运行环境时,这篇文章主要介绍了Docker在WSL环境下启动失败问题的解决办法,需要的朋友可以参考下
    2025-07-07
  • Docker无法stop或者rm指定容器问题解决方案

    Docker无法stop或者rm指定容器问题解决方案

    这篇文章主要介绍了Docker无法stop或者rm指定容器问题解决方案,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • Docker容器连接外部Mysql的几种方案

    Docker容器连接外部Mysql的几种方案

    这篇文章主要给大家介绍了关于Docker容器连接外部Mysql的几种方案,文中通过图文以及实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06
  • Gitlab-runner+Docker实现自动部署SpringBoot项目

    Gitlab-runner+Docker实现自动部署SpringBoot项目

    这篇文章主要介绍了Gitlab-runner+Docker自动部署SpringBoot项目,我们的主要流程就是通过Gitlab管理代码,然后利用Gitlab自带的Gitlab CI/CD功能与GitlabRunner进行注册绑定,需要的朋友可以参考下
    2022-04-04
  • docker-compose ports和expose的区别详解

    docker-compose ports和expose的区别详解

    这篇文章主要介绍了docker-compose ports和expose的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Docker数据存储总结

    Docker数据存储总结

    今天小编就为大家分享一篇关于Docker数据存储总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Docker定制容器镜像的2种方法(推荐)

    Docker定制容器镜像的2种方法(推荐)

    本篇文章主要介绍了Docker定制容器镜像的2种方法(推荐),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • docker简单安装部署mysql并配置远程连接

    docker简单安装部署mysql并配置远程连接

    使用docker部署mysql,可以省去mysql的安装配置过程,下面这篇文章主要给大家介绍了关于docker简单安装部署mysql并配置远程连接的相关资料,需要的朋友可以参考下
    2023-06-06
  • 修改Docker容器内文件的三种实现方式

    修改Docker容器内文件的三种实现方式

    这篇文章主要介绍了修改Docker容器内文件的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08

最新评论