紧急!解决Docker镜像无法拉取问题!

故障现象

  • 继去年Docker Hub被封锁后,各大NAS的注册表均出现问题,例如群晖的Docker套件注册表无法连接(更新至DSM7.2版本后恢复)。
  • 而在今年2024年6月初(约2024.06.06),NAS中最重要的工具Docker又面临无法使用的问题。
  • 常用镜像站:阿里云、科大、南大、上交等,全部挂掉。
  • 执行docker pull命令拉取docker镜像时无反应,一直在循环尝试。
  • 出现下述错误
  • 紧急!解决Docker镜像无法拉取问题!插图

猜测原因

  • 下面的说法来源于网络
  • 2024.06.06,上海交大的Docker Hub镜像加速器宣布因为监管要求被下架。
  • index服务器被DNS污染,导致无法拉取镜像。
  • 做好全面脱钩的准备
  • 自主知识产权的国产Docker将会横空出世
  • 临时性管控(过段时间就恢复)
  • 紧急!解决Docker镜像无法拉取问题!插图1
  • 紧急!解决Docker镜像无法拉取问题!插图2

最新方法

再次提醒!多种方法自行尝试,总有一款适合你,亲测可行!

增加Docker镜像注册表地址(20240616仍可行)

1.演示以群晖NAS系统上修改为例(其他系统自行探索方法)

2.打开群晖的Container Manager(Docker)套件,点击注册表–设置。

紧急!解决Docker镜像无法拉取问题!插图3

3.点击Docker Hub的存储库,然后点击编辑。

紧急!解决Docker镜像无法拉取问题!插图4

4.点击新增,添加下面两个地址,然后点击应用。

紧急!解决Docker镜像无法拉取问题!插图5

https://docker.shootchat.top

https://do.nark.eu.org
Bash

5.看到跳出的提示即可(群晖DSM7.2版本的存储库可选择Docker Hub(v1)

紧急!解决Docker镜像无法拉取问题!插图6

6.然后打开群晖的SSH功能,使用终端软件进行连接,并切换到root状态下。

紧急!解决Docker镜像无法拉取问题!插图7

7.正常拉取镜像即可

未修改前
root@nas:# docker pull mysql:8.0
8.0: Pulling from library/mysql
07bc88e18c4a: Already exists
2546f0005eef: Pulling fs layer
1021dda8eecf: Pulling fs layer
1bb57662dd7f: Pulling fs layer
7fb14d8034cd: Waiting
73124c42ecbe: Waiting
74830c23cea0: Waiting
0139fa284505: Waiting
5165942f42d6: Waiting
2915d634a344: Waiting
9a1f1e1ee309: Waiting

修改后
root@nas:# docker pull mysql:8.0
8.0: Pulling from library/mysql
07bc88e18c4a: Already exists
2546f0005eef: Pull complete
1021dda8eecf: Pull complete
1bb57662dd7f: Pull complete
7fb14d8034cd: Pull complete
73124c42ecbe: Pull complete
74830c23cea0: Pull complete
0139fa284505: Pull complete
5165942f42d6: Pull complete
2915d634a344: Pull complete
9a1f1e1ee309: Pull complete
Digest: sha256:7cf8a10b3c17273a47c5cd876cdb790c551012b40b36909b8ca0d9ab5721ed2c
Status: Downloaded newer image for mysql:8.0
docker.io/library/mysql:8.0
root@nas:#
C++

宝塔面板使用教程

1.在Docker界面点击设置

紧急!解决Docker镜像无法拉取问题!插图8

2.点击打开配置文件,并将以下配置粘贴并替换后保存,重启Docker

{
“registry-mirrors”: [
“https://do.nark.eu.org/”
]
}

紧急!解决Docker镜像无法拉取问题!插图9

历史教程(部分可用)

再次提醒!多种方法自行尝试,总有一款适合你,亲测可行!

挂梯子

  • 给自己的NAS/其他系统挂梯子
  • 自行查找方法,敏感内容不在博客展示。

手动导入已有镜像文件

  • 自行获取/微信S20306找我需要使用的docker镜像,然后导入到NAS系统内(大部分NAS系统直接WEB页面导入)。
  • 例如导入一个存放在NAS文件夹内的docker镜像文件(纯命令行操作导入)
  • 进入存放镜像文件的文件夹
    #进入你实际存放文件的文件夹,这只是个演示路径!
    
    cd /volume1/docker
    Bash
  • 执行命令,导入docker镜像。
    (此命令会按照你docker镜像文件的原格式生成镜像名和版本)
    #格式为 docker load -i "docker镜像文件名"
    
    docker load -i "jellyfin-jellyfin(10-9-2).syno.tar"
    Lua
  • 然后查看本地docker镜像列表
    docker images
    Undefined

docker代理

  1. 访问下面的网站
    https://dockerproxy.com/
    Bash

    紧急!解决Docker镜像无法拉取问题!插图10

  2. 拉到底部,将你需要拉取的docker镜像名和版本粘贴到里面。
    然后点击获取命令

紧急!解决Docker镜像无法拉取问题!插图11

  1. 然后依次在NAS上使用SSH终端,执行这三个命令。
    紧急!解决Docker镜像无法拉取问题!插图12
  2. 上面的全部做完后,就可以正常的使用docker clidocker-compose创建容器了。
  3. 如果有多个docker镜像需要使用,就重复前面的步骤,换成需要的docker镜像名和版本。

GitHub开源docker镜像加速项目

  1. 访问此项目
    https://github.com/DaoCloud/public-image-mirror
    Bash
  2. 与上面是同样的方法,使用代理名称拉取后再改回去。
  3. 例如拉取Docker Hub仓库的jellyfin/jellyfin:10.9.2版本docker镜像
    #将jellyfin/jellyfin:10.9.2换成你需要的镜像名和版本
    
    docker pull m.daocloud.io/docker.io/jellyfin/jellyfin:10.9.2
    Bash
  4. 重命名docker镜像
    #格式为 docker tag 代理镜像名:版本 原始镜像名:版本
    
    docker tag m.daocloud.io/docker.io/jellyfin/jellyfin:10.9.2 jellyfin/jellyfin:10.9.2
    Bash
  5. 删除代理的镜像
    #格式为 docker rmi 代理镜像名:版本
    
    docker rmi m.daocloud.io/docker.io/jellyfin/jellyfin:10.9.2
    Bash

其他镜像加速源

紧急!解决Docker镜像无法拉取问题!插图13

Windows端Linux子系统导出镜像

  1. 常规的Clash代理并不一定可以帮助你docker pull下来镜像,给各个系统挂梯子也麻烦。
    那就直接给Windows挂梯子,教程最多,也最简单,调试也方便。
    演示将在Windows端的Linux子系统(Ubuntu2404)上进行拉取镜像并导出镜像文件。
  2. 给你的Windows系统挂梯子(自行解决)
  3. 进入Linux子系统,切换到root后正常的docker pull下来你所需的镜像。
    #演示拉取jellyfin官方的10.9.2版本
    
    docker pull jellyfin/jellyfin:10.9.2
    Bash
  4. 查看镜像列表
    docker images
    Undefined
  5. 导出docker镜像
    (演示以群晖NAS系统上导出的镜像命名格式为例)
    #格式为 docker save 原始镜像名和版本 -o “镜像方-镜像名(版本).syno.tar"
    #需要注意的是前的镜像名是/ 后面的镜像名将/换成-,镜像版本换成-符号代理.符号,并以”“符号圈住后面的镜像文件,
    #左为原始镜像名,右为需要保存的镜像文件名。
    
    docker save jellyfin/jellyfin:10.9.2 -o "jellyfin-jellyfin(10-9-2).syno.tar"
    Bash
  6. Linux系统上导出的镜像默认保存位置是在/root路径下
    #进入/root路径
    
    cd /root
    Bash
  7. 查看当前文件夹内的文件
    ls
    Bash
  8. 带有tag标签的docker镜像文件是包含”符号的
    root@localhost:~# ls
    'jellyfin-jellyfin(10-9-2).syno.tar'   snap
    root@localhost:~#
    Ruby
  9. 将导出的镜像移动到Windows系统上指定的文件夹下
    #将当前目录下的'jellyfin-jellyfin(10-9-2).syno.tar'文件移动到Windows系统C盘的默认下载文件夹下
    #换成你自己实际的文件夹路径,Windows文件夹路径在/mnt/c路径下。
    
    
    #格式为mv docker镜像文件 移动到指定的文件夹路径
    
    mv 'jellyfin-jellyfin(10-9-2).syno.tar' /mnt/c/Users/S20306/Downloads/
    Bash
  10. 然后你就获取了一个带有TAG标签的docker镜像,可以直接导入到群晖NAS上。
    打开群晖的Docker套件–映像–操作–导入–从文件添加–从本地设备
    紧急!解决Docker镜像无法拉取问题!插图14
  11. 如果是其他NAS/Linux系统,可以将文件放到文件夹内,然后进入存放镜像的文件夹路径下,执行下面的命令导入docker镜像。
    #格式 docker load < docker镜像文件
    
    docker load <  'jellyfin-jellyfin(10-9-2).syno.tar'
    
    #完整实例
    root@localhost:~# docker load <  'jellyfin-jellyfin(10-9-2).syno.tar'
    cf8a3233dc27: Loading layer [==================================================>]  2.048kB/2.048kB
    e85f146498c1: Loading layer [==================================================>]  156.4MB/156.4MB
    87ffad5c15db: Loading layer [==================================================>]  57.47MB/57.47MB
    Loaded image: jellyfin/jellyfin:10.9.2
    Makefile
  12. 查看docker镜像列表
    docker images
    Undefined

项目地址

  • GitHub项目地址:https://github.com/DaoCloud/public-image-mirror
重要声明

本站资源大多来自网络,如有侵犯你的权益请联系管理员,我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果遇到付费才可观看的文章,建议升级会员或者成为认证用户。全站所有资源任意下免费看”。本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip,zip、rar解压,建议下载WinRAR

给TA充电
共{{data.count}}人
人已充电
教程

蔚蓝档案一键端

2024-6-11 10:52:30

源码

碧蓝航线全皮肤+魔改+倍率

2024-3-21 19:39:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索