最近各大高校以及容器技术社区,由于众所周不知的原因, 纷纷关闭多个镜像加速站点。
这极大地影响了工作效率和开发进度。面对这一困境,本文将为你介绍几种有效的解决方案,帮助你顺利拉取Docker镜像,继续你的开发工作。
今天就介绍几个方法让拯救你的Docker
方法1: 某些云镜像加速
方法2: 使用Docker Hub并将镜像推送到阿里云自有仓库
方法3:使用Github Action 构建docker镜像
方法4: 部署DockerHub的代理
方法5: 镜像仓库前缀替换
一、某些云镜像加速
这里某些云包括但不限于国内的几大云,XX云、腾讯云、华为云,使用的方法都大同小异,这里介绍华为云的用户
镜像加速不可用
腾讯云镜像加速器地址: https://mirror.ccs.tencentyun.com
中国科学技术大学: https://docker.mirrors.ustc.edu.cn
Docker官方镜像(中国区)镜像加速: https://registry.docker-cn.com
网易云镜像加速器地址: http://hub-mirror.c.163.com
南京大学镜像加速器地址: https://docker.nju.edu.cn
镜像加速可用镜像源
华为云的镜像加速地址:XXX.mirror.swr.myhuaweicloud.com
Daocloud 镜像加速器地址: https://docker.m.daocloud.io
华为云镜像加速
进入华为云搜索“ 容器镜像服务”或者 “SWR” ,进入控制台
点击 “镜像资源”—> “镜像中心”—> “镜像加速器”
操作说明
安装/升级容器引擎客户端
推荐安装1.11.2以上版本的容器引擎客户端
配置镜像加速器
针对容器引擎客户端版本大于 1.11.2 的用户 以root用户登录容器引擎所在的虚拟机
修改“/etc/docker/daemon.json”文件(如果没有,可以手动创建),在该文件内添加如下内容:
vi /etc/docker/daemon.json
{
"registry-mirrors": [ "https://你的地址.mirror.swr.myhuaweicloud.com" ]
}
#按“Esc”,输入:wq保存并退出。
重启容器引擎
配置完成后,执行systemctl restart docker
重启容器引擎。 如果重启失败,则检查操作系统其他位置
(如:/etc/sysconfig/docker
、/etc/default/docker
)是否配置了registry-mirrors参数,删除此参数并重启容器引擎即可。
确认配置结果
执行docker info,当Registry Mirrors字段的地址为加速器的地址时,说明加速器已经配置成功。
某云镜像加速
镜像加速器
点击”镜像工具”—>镜像加速器
二、使用Docker Hub并将镜像推送到自有仓库
之前写过一篇文章: https://mp.weixin.qq.com/s/OrcBrtrZRwie3Q8eYVfl-A
画个图说明:
当然也可以打包下载到本地
docker save busybox > busybox.tar
docker load < busybox.tar
三、使用Github Action 构建docker镜像
前置条件
1.可以访问Github,国内环境github时而抽风体质,如果没有科学环境也可以使用 https://github.com/521xueweihan/GitHub520 +SwitchHosts 基本还是可以使用的(有的话就当我没说)。
2.有个github账号
3.免费版Action 每天能使用1小时,每个月33小时(基本上够用)。
参考博主悟空的日常: 使用Github Action 构建docker镜像 http://wkdaily.cpolar.cn/archives/gc
1.要有一个github账号
没有账号就需要注册一个。
2.fork项目DockerTarBuilder
fork 叉子叉到自己的仓库中: https://github.com/wukongdaily/DockerTarBuilder
3.点击 Actions
点击Actions选项卡,再点击同意
选择平台,再填入镜像名
4.下载镜像
点击 All workflows
5.解压恢复镜像
将下载好的压缩包上传到docker宿主机上。
#解压
unzip docker-images-tar.zip
#Archive: docker-images-tar.zip
# inflating: x86-64-images.tar.gz
#再解压:
tar -zxvf x86-64-images.tar.gz
ls -lh alpine:latest-amd64.tar
#-rw------- 1 mysql 127 7.8M 7月 4 16:57 alpine:latest-amd64.tar
#导入
docker load < alpine:latest-amd64.tar
#导入成功。
docker images
#REPOSITORY TAG IMAGE ID CREATED SIZE
#alpine latest a606584aa9aa 13 days ago 7.8 MB
四、部署DockerHub的代理
1.前置条件
有个github账号
有个cloudflare账号
2.访问并fork如下项目到自己的仓库
https://github.com/cmliu/CF-Workers-docker.io
3.部署到cf的pages服务中
3.1登录cloudflare并点击Worker和Pages
点击 “Worker和Pages”再点 概述
点击 “点击pages”再点 “连接到Git”
3.2 点击pages
连接GitHub
容易登录之后
3.3 选择刚才fork的仓库
点击 保存并部署
构建和部署
继续处理项目
4.访问并记录刚才部署的代理网站
部署成功,点击访问站点。
5.自定义域名
这步不是必须
因为cloudflare提供的域名太长不利于记忆,可以使用自有的域名,解析
我这里配置的域名 dockerhub.xgss.net
再域名解析过来
# ping dockerhub.xgss.net
PING cf-workers-docker-io-1wu.pages.dev (172.66.47.123) 56(84) bytes of data.
64 bytes from 172.66.47.123 (172.66.47.123): icmp_seq=1 ttl=53 time=988 ms
64 bytes from 172.66.47.123 (172.66.47.123): icmp_seq=2 ttl=53 time=996 ms
6.修改配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.fxxk.dedyn.io"] # 请替换为您自己的Worker自定义域名
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
五、镜像仓库前缀替换
如果由于网络限制,你无法直接访问某些镜像仓库,还可以尝试通过修改镜像仓库前缀来拉取镜像。一些国内的服务商提供了镜像仓库的镜像服务,你可以将原有的仓库前缀替换为对应的国内服务商的前缀。
例如,将docker.io替换为docker.m.daocloud.io等。这种方法虽然可能不是所有镜像都适用,但能解决一部分镜像拉取问题。
总结
以上就是拯救你的Docker 几种方法,希望本文介绍的这些方法能够帮助到你,让你的Docker之旅更加顺畅无阻。
2024年12月19日新增自用的Docker地址
注意地址要修改
有些可能失效,请注意甄别。
vi /etc/docker/daemon.json
填写一下内容,注意按需修改
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://XXXXXXX.mirror.swr.myhuaweicloud.com", # 改成自己的地址
"https://XXXXXXX.mirror.aliyuncs.com",# 改成自己的地址
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn/",
"http://mirror.azure.cn/",
"https://hub.rat.dev/",
"https://docker.ckyl.me/",
"https://docker.chenby.cn",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io"
]
}
#加载配置,并重启
systemctl daemon-reload
systemctl restart docker
docker info
可用的 docker 镜像地址
DockerHub 镜像仓库 | 镜像加速器地址 |
---|---|
镜像使用说明 | https://dockerhub.icu https://hub.rat.dev https://docker.wanpeng.top |
镜像使用说明 | https://doublezonline.cloud |
镜像使用说明 | https://docker.mrxn.net |
DockerHub 镜像加速代理 | https://docker.anyhub.us.kg |
镜像使用说明 | https://dislabaiot.xyz |
Docker Hub Container Image Library | https://docker.fxxk.dedyn.io |
评论区贡献 | https://docker-mirror.aigc2d.com |
测试镜像是否可用
docker pull hub-mirror.c.163.com/library/nginx:latest
可以把 hub-mirror.c.163.com 替换成上述的镜像地址
使用方法
临时配置
通过 –register-mirror 临时指定镜像源地址
docker pull 镜像名称 -–registry-mirror=国内镜像源地址
永久配置
如果你嫌弃临时指向麻烦,可以通过配置文件进行配置,永久生效。
linux 配置镜像源
linux 环境下,要配置 docker 镜像源,可以按照以下步骤进行:
打开 docker 配置文件 /etc/docker/daemon.json,如果该文件不存在,则可以手动创建该文件。
在该配置文件中添加以下内容,https://hub-mirror.c.163.com 换成上述的可用镜像地址。
如果要使用多个镜像源,可以在 “registry-mirrors” 数组中添加多个镜像源地址,以英文逗号分隔。{ "registry-mirrors": ["https://hub-mirror.c.163.com"] }
保存配置文件,并重启 docker 服务,以使配置生效。可以使用以下命令重启 Docker 服务:
sudo systemctl restart docker
如果使用的是 Ubuntu 14.04 等旧版系统,可以使用以下命令重启 Docker 服务:
sudo service docker restart
配置完成后,可以使用 docker pull 命令测试是否能成功拉取镜像。例如,可以使用以下命令拉取官方的 Ubuntu 镜像:
docker pull ubuntu
注意: 如果在 Docker Desktop for Mac 或 Docker Desktop for Windows 中使用 Docker,可以在 Docker Desktop 的设置中进行镜像加速器的配置,不需要手动编辑配置文件。
Windows/Mac
以在 Windows 上配置 Docker 国内镜像为例,按照以下步骤进行:
- 打开 Docker 设置。可以在任务栏右下角找到 Docker 图标,右键单击该图标,然后选择“Settings”打开设置。
- 在设置界面中,选择“Docker Engine”选项卡,在该选项卡中找到“registry-mirrors”一栏。
- 在 “registry-mirrors” 一栏中,输入要使用的镜像地址,例如:
https://dockerhub.icu
- 点击 Apply & restart 保存设置,并等待 Docker 服务重启。
- 配置完成后,可以使用 docker pull 命令测试是否成功使用了国内镜像源。例如,可以使用以下命令拉取官方的 Ubuntu 镜像:
docker pull ubuntu
在 Mac 上的配置类似。
在 Desktop for Windows 中,还需要确保 Docker Daemon 正在运行,并已经启用了“Expose daemon on tcp://localhost:2375 without TLS”选项。可以在 Docker 设置的“General”选项卡中勾选该选项。