国内机器下载外网Docker镜像的解决方案
1、背景
博主在搭建go-judge判题环境时,其中docker部署需要构建镜像,他的dockerfile文件依赖了criyle/go-judge:latest镜像,但该镜像在国内的服务器环境下会因为网络问题下不到,即便配置了docker加速器,本文介绍在无法下载外网镜像时的解决方案。
楼主是基于宝塔面板管理docker,再次提醒,宝塔面板管理docker和直接使用命令行,本质是一样的。
2、方案1:配置镜像加速器
有些情况下配置镜像加速器即可解决,但如果你想下载的镜像只在官网仓库,则配置了加速器也下不到。
配置方法如下:
也可以直接打开配置文件配置
修改配置文件之后需要重启docker
如果你本身就是海外的云服务器,这里是可以搜索到内容的,就不需要额外配置了。
国内环境的服务器:
海外环境的服务器:
3、方案2:有一台能访问外网的云服务器
如果你是做全栈开发或者独立开发(偏向于后端、运维),非常建议有两台用于测试的服务器,一台国内的,一台海外的。
比如在下载不到dockerhub官网镜像时,可以用海外的服务器直接搜索到镜像,因为海外机器可以连接到dockerhub官网。
整体思路就是,在海外的机器上下载到docker镜像,然后再把镜像导出;然后在国内的机器上再导入。
拉取成功之后,在海外机器的服务器,本地镜像就有了。
我们将镜像导出到海外机器的本地目录,比如我们选择导出到/home下,叫go-judge.tar:
下载到自己的Windows机器上
下载到文件之后,再上传到国内机器的某个目录,通过以下方式导入到国内服务器:
之后就可以正常使用了。
以上基于宝塔面板演示,本质上和使用docker命令一样,自行搜索。
4、方案3:使用github+阿里云镜像仓库海外构建
阿里云上创建镜像仓库,一定要选择海外构建,配合github上创建一个dockerfile,可以构建自己想要的镜像。
首先github项目的情况是这样:
然后到阿里云下创建镜像仓库:
一定要选择海外构建,关联自己的github账号
国内机器上Docker添加仓库:
参考文章:无法下载外网Docker镜像的解决方案 - 陌上荼靡 - 博客园
5、方案4:criyle/go-judge:latest镜像可私信楼主获取
这个镜像博主已本地备份,需要可私信博主。