问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

国内镜像加速器帮你搞定Docker拉取超时!

创作时间:
作者:
@小白创作中心

国内镜像加速器帮你搞定Docker拉取超时!

引用
CSDN
10
来源
1.
https://blog.csdn.net/qq_44866828/article/details/144867086
2.
https://blog.csdn.net/weixin_50160384/article/details/139861337
3.
https://blog.csdn.net/nibonnn/article/details/107189729
4.
https://blog.csdn.net/llc580231/article/details/139979603
5.
https://blog.csdn.net/MacwinWin/article/details/113967667
6.
https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6
7.
https://www.coderjia.cn/archives/dba3f94c-a021-468a-8ac6-e840f85867ea
8.
https://www.cnblogs.com/Nine4Cool/p/18499621
9.
https://www.wxy97.com/archives/b5b225b6-7741-4560-be2f-2e6a4f671d9b
10.
https://www.xumoyuan.com/speed/%E8%A7%A3%E5%86%B3docker-hub%E9%95%9C%E5%83%8F%E8%B6%85%E6%97%B6/

在2024年6月之后,由于国内各大容器镜像服务提供方限制或关闭服务,许多IT工程师在拉取Docker镜像时遇到了超时问题。为了解决这一难题,可以尝试配置国内镜像加速器来优化网络配置。通过设置如阿里云、DaoCloud等提供的国内镜像源,不仅可以显著提升Docker镜像的拉取速度,还能避免因网络不稳定导致的超时现象。具体操作步骤包括编辑/etc/docker/daemon.json文件,添加相应的镜像加速地址,并重启Docker服务以使配置生效。这样,即使在网络环境不佳的情况下,也能顺利地完成Docker镜像的拉取工作。

01

背景介绍

自2024年6月以来,国内用户在使用Docker拉取镜像时频繁遇到超时问题。这主要是由于:

  1. 国内各大云服务商(如阿里云、腾讯云等)陆续下架了Docker Hub镜像加速服务
  2. 部分高校和科研机构的镜像源也因各种原因停止服务
  3. 网络环境不稳定,直接访问Docker Hub速度缓慢

为了解决这一问题,我们需要寻找新的解决方案来加速Docker镜像的拉取。

02

解决方案

方案一:配置国内镜像源加速

这是最常用的解决方案,通过配置国内的镜像源加速器,可以显著提升Docker镜像的拉取速度。

  1. 获取可用的镜像源地址

    根据最新收集的镜像源列表(截至2025年1月),以下是一些稳定可用的镜像源地址:

    {
      "registry-mirrors": [
        "https://docker.hpcloud.cloud",
        "https://docker.m.daocloud.io",
        "https://docker.unsee.tech",
        "https://docker.1panel.live",
        "http://mirrors.ustc.edu.cn",
        "https://docker.chenby.cn",
        "http://mirror.azure.cn",
        "https://dockerpull.org",
        "https://dockerhub.icu",
        "https://hub.rat.dev",
        "https://proxy.1panel.live",
        "https://docker.1panel.top",
        "https://docker.m.daocloud.io",
        "https://docker.1ms.run",
        "https://docker.ketches.cn"
      ]
    }
    
  2. 配置方法

    • Linux系统(Ubuntu 16.04+、Debian 8+、CentOS 7+)

      打开终端,执行以下命令:

      sudo mkdir -p /etc/docker
      sudo tee /etc/docker/daemon.json <<-'EOF'
      {
        "registry-mirrors": [
          "https://docker.hpcloud.cloud",
          "https://docker.m.daocloud.io",
          "https://docker.unsee.tech",
          "https://docker.1panel.live",
          "http://mirrors.ustc.edu.cn",
          "https://docker.chenby.cn",
          "http://mirror.azure.cn",
          "https://dockerpull.org",
          "https://dockerhub.icu",
          "https://hub.rat.dev",
          "https://proxy.1panel.live",
          "https://docker.1panel.top",
          "https://docker.m.daocloud.io",
          "https://docker.1ms.run",
          "https://docker.ketches.cn"
        ]
      }
      EOF
      sudo systemctl daemon-reload
      sudo systemctl restart docker
      
    • MacOS

      打开Docker Desktop,进入Preferences -> Docker Engine,将上述JSON内容添加到配置中,然后点击Apply & Restart。

    • Windows

      打开Docker Desktop,进入Settings -> Docker Engine,将上述JSON内容添加到配置中,然后重启Docker。

  3. 验证配置

    执行以下命令检查配置是否生效:

    docker info | grep "Registry Mirrors"
    

    如果看到配置的镜像源地址,说明配置成功。

方案二:使用代理服务器

如果配置镜像源加速后仍然遇到超时问题,可以尝试使用代理服务器。

  1. 创建代理配置文件

    打开终端,执行以下命令:

    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF'
    [Service]
    Environment="HTTP_PROXY=socks5://127.0.0.1:1080"
    Environment="HTTPS_PROXY=socks5://127.0.0.1:1080"
    EOF
    

    请根据实际情况修改代理服务器的地址和端口。

  2. 重启Docker服务

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  3. 验证配置

    执行以下命令检查环境变量是否生效:

    sudo systemctl show --property=Environment docker
    

方案三:直接传输镜像

如果上述方法都无法解决问题,可以考虑在有网络的机器上拉取镜像,然后导出并传输到目标机器。

  1. 在可联网设备上拉取并导出镜像

    docker pull youshandefeiyang/allinone
    docker save youshandefeiyang/allinone > allinone.tar
    
  2. 传输并加载镜像到目标服务器

    scp allinone.tar user@target_ip:/path/
    docker load < allinone.tar
    
03

测试与验证

配置完成后,可以通过以下方式测试拉取速度:

  1. 拉取一个常用的镜像

    docker pull nginx
    

    观察拉取速度是否有所提升。

  2. 使用docker info检查配置

    docker info | grep "Registry Mirrors"
    

    确认配置的镜像源是否生效。

04

常见问题解答

  1. Q:配置后仍然超时怎么办?

    A:尝试更换其他镜像源地址,或使用代理服务器。也可以检查本地网络环境是否正常。

  2. Q:如何知道哪个镜像源最快?

    A:可以使用docker pull命令分别测试不同镜像源的拉取速度,选择速度最快的进行配置。

  3. Q:配置文件格式错误怎么办?

    A:确保daemon.json文件的格式符合JSON规范,可以使用在线JSON校验工具进行检查。

通过以上解决方案,相信可以有效解决Docker镜像拉取超时的问题。如果在操作过程中遇到任何问题,欢迎随时交流讨论。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号