分享一下个人在使用 Docker 过程中无法下载镜像的一些解决方法

写在开头

由于目前在国内使用 Docker,无法从国外源如 DockerHub 下载镜像,所以今天分享3个用于在日常使用 Docker 过程中解决无法下载镜像问题的方法。

2025.3.15 编辑
试了一下直接修改 docker 配置文件,添加加速地址可以直接在命令行下载,在最开始使用 docker 的时候试过这个方法,没有效果,但是最近试了下又可以了~

目前个人比较推荐的是方法1和方法2 方法0

  • 方法0:修改 docker 配置文件
  • 方法1:DPanel 使用上手容易,操作简单,在解决镜像下载问题的同时个人认为 DPanel 也是最好用的 Docker 容器管理工具
  • 方法2:是我在使用了其他人开发的 GitHub 项目之后,觉得功能不够丰富,进行修该优化之后的项目,可以每日自动更新同步的镜像,同时在 pull 镜像时填写的镜像名称方便输入与记忆( docker pull ghcr.io/sqing33/dpanel)
  • 方法3:缺点就是首次配置有些许复杂,同时 pull 的镜像名称过长(docker pull swr.cn-south-1.myhuaweicloud.com/docker-sqing-huawei/dpanel)

0. 修改 docker 配置文件添加加速地址

  • 打开 docker 配置文件:sudo nano /etc/docker/daemon.json
  • 添加以下内容:
{
    "registry-mirrors": [
        "https://docker.1panel.live",
        "https://docker-0.unsee.tech",
        "https://docker.1panel.live",
        "https://registry.dockermirror.com",
        "https://docker.imgdb.de",
        "https://docker.m.daocloud.io",
        "https://hub.firefly.store",
        "https://hub.littlediary.cn",
        "https://hub.rat.dev",
        "https://dhub.kubesre.xyz",
        "https://cjie.eu.org",
        "https://docker.kejilion.pro",
        "https://docker.1panelproxy.com",
        "https://docker.hlmirror.com",
        "https://hub.fast360.xyz",
        "https://ghcr.io"
    ]
}
  • 重启 docker :sudo systemctl restart docker

1. 使用 docker 管理面板 DPanel 加速下载

  • 安装 DPanel 管理面板:
  docker run -d --name dpanel --restart=always \
   -p 8807:8080 \
   -v /var/run/docker.sock:/var/run/docker.sock \
   -v /home/dpanel:/dpanel -e APP_NAME=dpanel ghcr.nju.edu.cn/sqing33/dpanel
  • 浏览器输入地址http://[ip]:8807进入面板,点击镜像管理进入页面

  • 点击左侧仓库管理,点击 Docker Hub行最后的设置图标

  • 在加速地址填入如下地址:

https://docker.1panel.live
https://docker-0.unsee.tech
https://docker.1panel.live
https://registry.dockermirror.com
https://docker.imgdb.de
https://docker.m.daocloud.io
https://hub.firefly.store
https://hub.littlediary.cn
https://hub.rat.dev
https://dhub.kubesre.xyz
https://cjie.eu.org
https://docker.kejilion.pro
https://docker.1panelproxy.com
https://docker.hlmirror.com
https://hub.fast360.xyz
  • 点击镜像管理页面左侧的镜像列表,使用右边的拉取镜像功能进行镜像下载

2. 将 Docker 镜像同步至 Github 仓库

  • 此项目用于将 Docker 镜像同步到 GitHub 的仓库 ghcr.io 以加速国内 Docker 镜像的下载,若ghcr.io下载速度慢可尝试使用南京大学加速站 ghcr.nju.edu.cn 加速下载。
  • 仓库地址:https://github.com/sqing33/docker-image-sync
  • 使用方法:
  1. 仓库设置

    首先,将此仓库 fork 到个人账号。进入已 fork 的仓库后,点击页面顶部的 Settings 进入设置页面。接着,依次选择 Action > General。在 Actions permissions 区域,选择 Allow all actions and reusable workflows,这将允许所有操作和可复用的工作流运行;在 Workflow permissions 区域,选择 Read and write permissions,并勾选 Allow GitHub Actions to create and approve pull requests,此设置将赋予工作流读写权限,并允许其创建和批准拉取请求。完成上述设置后,点击 save 保存更改。

  2. 触发镜像同步

    完成设置后,点击页面顶部的 Action,再从左侧列表中选择 将 Docker 镜像同步到 ghcr.io。随后,点击右侧的 Run workflow,在弹出的界面中填写待同步的镜像信息。

  3. 同步结果查看

    镜像同步完成后,readme.md 文件中会自动添加该镜像的相关信息条目,内容包括源镜像、用途、pull 命令以及 docker-compose 文件路径。同时,在项目的 docker-compose 目录下,会自动复制 example.yaml 文件,并将其重命名为同步镜像的名称。

  4. 镜像管理

    若要查看或删除已同步过来的镜像,可访问 Github 个人首页(https://github.com/sqing33),点击 Packages 即可查看已同步的所有镜像。点击具体镜像,可查看其包含的所有版本。如需对单个镜像进行管理,可点击右侧的 Package settings 进行相关操作。

  5. 自动更新机制

    本仓库设置了自动更新机制,每天晚上 12 点会自动从源镜像获取最新版本,并更新 ghcr.io 上的对应镜像。在同步过程中指定版本的镜像,更新时系统会保留该指定版本。同时,在更新过程中,系统会自动检索 readme.md 中的镜像信息,若发现某个镜像已不存在于仓库内,会自动删除对应的条目。

3. 将 Docker 镜像同步至 华为云/阿里云 镜像仓库

使用方法稍复杂,可以自行进入对应的项目仓库查看

同步到阿里云镜像仓库:https://github.com/tech-shrimp/docker_image_pusher

同步到华为云镜像仓库:https://github.com/lomtom/sync-images