Docker / 云原生

自建Docker镜像加速,并把域名托管到CF加速镜像拉取

浅时光博客 · 7月2日 · 2024年 · 8.3k 次已读

一、准备工作


场景说明:解决国内环境下,使用docker部署服务无法下载Docker 镜像的问题!!

一台国外的服务器,在国内可以正常访问,服务器不需要配置多高,国外的流量便宜,可以跑Docker容器就行,个人或者几个人使用完全不用担心流量问题。另外就是需要一个域名,使用最便宜的并且可以托管到cloudflare就行,比如.xyz

我这里使用的服务器规格如下图所示:

项目地址:https://github.com/dqzboy/Docker-Proxy

二、域名添加到CF


1、添加站点

接下来,我们需要将我们的域名从原来的DNS服务商那里(就是你购买域名的地方)转到cloudflare,然后由cloudflare管理我们的域名的DNS记录,并开启cloudflare的CDN加速

注意:有的服务商可以直接修改原来的NS记录,但是有的服务商不可以直接更改,需要单独在域名服务器配置里面添加!

检查完成之后,你的cloudflare账号所绑定的邮箱会在第一时间收到域名在cloudflare激活的邮件!

2、申请证书

这里我们可以申请由Cloudflare 签名的免费 TLS 证书,然后安装在我们的服务器上,证书年限我们直接选择15年。

⚠️注意:这个是回源证书,只有Cloudflare自己会信任,如果你直接在浏览器访问是提示证书无效的

  • 把生成的证书文件内容和证书密钥内容分别保存为可被你所部署的WEB服务识别的格式。使用 OpenSSL 的服务器(例如 Apache 和 NGINX)通常需要PEM文件
  • 比如:我这里将证书保存为 dqzboy.pem 密钥保存为 dqzboy.key,然后把文件上传到Nginx的配置目录下即可!

三、部署镜像加速


1、部署服务

现在,我们访问项目 Docker-Proxy (点此访问) 然后复制一键部署脚本,在我们的服务器上进行部署。提前说明一下:服务器我之前部署过,脚本执行过程中显示为已经安装

2、访问UI面板

我们在浏览器输入上面的部署完成之后显示的访问地址就可以看到UI界面了(记得防火墙和安全组放开50000端口),注意:UI界面默认显示为空白,只有当你通过你部署的加速服务的地址拉取镜像之后,UI界面才会显示出对应的镜像内容!

服务部署完成了,接下来就是把我们在Cloudflare生成的15年的证书配置到Nginx服务中去。

Nginx默认部署到位置在 /etc/nginx,你把证书和密钥放在此目录下即可。上传好之后,修改Nginx配置即可,配置存储到conf.d目录下,配置文件名称为:docker-proxy.conf

~]# cd /etc/nginx/

]# vi conf.d/docker-proxy.conf
server {
    listen       80;
    listen       443 ssl;
    server_name  ui.dqzboy.xyz;
    # 修改为你的证书名称 
    ssl_certificate dqzboy.pem;
    # 修改为你的证书私钥名称 
    ssl_certificate_key dqzboy.key;
    ssl_session_timeout 1d;
    ssl_session_cache   shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_buffer_size 8k;
    proxy_connect_timeout 600;
    proxy_send_timeout    600;
    proxy_read_timeout    600;
    send_timeout          600;
    location / {
        proxy_pass   http://localhost:50000;
        proxy_set_header  Host $host;
        proxy_set_header  Origin $scheme://$host;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  X-Forwarded-Ssl on; 
        proxy_set_header  X-Forwarded-Port $server_port;
        proxy_set_header  X-Forwarded-Host $host;
    }
}

... 其他配置类似上面的UI配置。修改完成之后执行下面的命令重载Nginx配置
]# nginx -t
]# nginx -s reload

说明:上面Nginx配置是我们在执行一键部署Nginx时候自动生成的配置,配置中默认SSL是注释掉的,需要你手动把注释去掉。我们在把域名转到 Cloudflare 时配置了一条UI到DNS记录,现在我们可以直接通过域名访问UI界面了

3、添加DNS记录

按照上面的操作配置好Nginx之后,文章来源(Source):https://dqzboy.com我们现在需要把我们部署时配置的域名前缀(也就是主机记录),需要在Cloudflare进行解析。注意我们这里只进行DNS解析,先不开启CDN,为了测试开启CDN和不开启的情况下拉取镜像的速度都差别。

  • 按照下图把域名主机记录进行配置下,你在配置时可以直接开启CDN,我这里只是为了进行测试

四、拉取镜像测试


现在,我们找一台国内的服务器,然后直接使用上面的hub加速地址来拉取docker hub上的镜像。为了测试我需要单独给hub加速域名申请个SSL证书,因为我们上面申请的15年证书为CF回源证书!

现在我们把CF CDN开启(就是那个小云朵),然后把上面服务器上下载的镜像删除掉和加速服务缓存的内容删除掉,原文链接:https://dqzboy.com然后再次执行相同的命令查看效果

以上就是本教程的所有内容了,果你觉得这个项目对你有帮助,请给我点个Star。并且情况允许的话,可以给我一点点支持 (赞助发电),总之非常感谢支持


本文作者:浅时光博客
原文链接:https://www.dqzboy.com/17665.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站内容仅供个人学习与研究,严禁用于商业或非法目的。请在下载后24小时内删除相应内容。继续浏览或下载即表明您接受上述条件,任何后果由用户自行承担。

0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!