老E的博客

  • 首页
  • 关于
  • 技术应用
    • VPS相关
    • AI相关
    • 盒子相关
    • 其他
  • 订阅Youtube频道
  • 网络加速
    • expressvpnNo.1 ExpressVPN
    • 最佳免费VPN-PrivadoVPN
    • NordVPN
    • 廉价王者-Surfshark
    • PrivateInternetAccess
    • 解锁一切-PrivateVPN
  • 公益资源
    • AI导航
    • 工具下载
    • Docker镜像加速
  • 友情链接
    • tickcloudTickcloud
老E的博客
专注记录并分享跨境技术应用及随想
  1. 首页
  2. 技术应用
  3. 正文

DockerHub国内使用方法及通过Cloudflare workers搭建专属加速代理

2024年6月21日 15334次阅读 2条评论
clawcloud
expressvpn best vpn
privado vpn
surfshark vpn
private vpn
pia vpn
nord vpn

Docker Hub 是 Docker 提供的一项服务,是世界上最大的容器映像存储库,其中包含一系列内容源,包括容器社区开发人员\开源项目和独立软件供应商(ISV),都会在容器中构建和分发其代码。2024年6月起,国内所有公开的 dockerhub 加速源陆续下架(实际是转为校内或企业内专用),官方源全部 sni 阻断。本文简要说明国内使用 dockerhub 的方法,希望对确有 docker 服务需求的小伙伴能有所帮助。未来,如果 github、node、golang 等众多非开发人员也需要用到的工具/网站也出现类似情况时,照葫芦画瓢糊一个代理就是。搭建专属 docker 代理加速站点的诸多关键细节可观看同期「视频分享」。

目前可用的个人公益dockerhub镜像源

以下无限制要求(注册、验证等)的 dockerhub 镜像源,均为个人搭建提供的国内可使用加速镜像,感谢的同时需要提醒,随时有可能关闭或失效。

Docker镜像加速

https://hub.uuuadc.top/docker.1panel.live

https://docker.1panel.live

https://hub.rat.dev

DockerHub 镜像加速代理

https://docker.anyhub.us.kg

https://docker.chenby.cn

https://dockerhub.jobcher.com

DockerhubICU

https://dockerhub.icu

Docker镜像加速站

https://docker.ckyl.me

Docker镜像

https://docker.awsl9527.cn

https://docker.hpcloud.cloud

Atomhub(只包含336个基础镜像)

https://atomhub.openatom.cn

Daocloud镜像

https://docker.m.daocloud.io

本站自用镜像

https://docker.aecvpn.com

Dockerhub 代理加速镜像,可以通过两种方法使用:

1.添加、设置 registry mirror

tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://hub.uuuadc.top",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.ckyl.me",
        "https://docker.awsl9527.cn",
        "https://docker.m.daocloud.io",
        "https://docker.laoex.link"
    ]
}
EOF
systemctl daemon-reload
systemctl restart docker

2.手动指定 Dockerhub Proxy

在拉取镜像时手动指定代理加速 url,将以下命令中示意的 proxy-url 替换为任意可用的加速 url 即可。

docker pull proxy-url/library/mysql:8.0

自建 dockerhub 代理

个人自用对镜像拉取速度没有过高要求,可以使用 「cloudflare-docker-proxy 」项目,老传统快速在 Cloudflare 上糊一个 dockerhub 代理。因为 workers.dev 域名严重污染甚至被墙,项目必须绑定域名。因此,搭建的前备条件如下:

  • 一个 Cloudflare 账号
  • 一个 Github 账号
  • 一个域名并且已经托管于 Cloudflare,无需配置任何 DNS 记录

第一步  Github 中 fork 并修改项目

建议在登录 github 状态下,打开 「cloudflare-docker-proxy 」项目,点击右上角的『fork』,将项目导入到自己的账户并创建完全一个相同的代码仓库。

fork

项目 fork 之后,进行 3 个文件的修改。需要的修改文件如下图所示,分别为 src/index.js、README.md、wrangler.toml,修改内容就是将园项目中的 libcuda.so 修改为自己的域名,修改步骤是点开文件后,点击右上方的铅笔图标进入编辑模式,完成修改后务必提交更改。

modify file

第二步(可选) 添加使用说明

本步骤可选,作用仅限于当我们自己或用户通过浏览器访问镜像加速站点时,可以显示一些基本信息。所有操作均在 src 目录下完成,首先添加提示 src/tips.html 文件,其中的 docker.yourdomain.com 等替换为自己的对应域名。

1.添加 html 文件

tips.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="docker|dockerhub|vps|老E的博客"> 
<meta name="description" content="老E的博客-appscross.com-VPS | AIGC | Proxy | TVBox">
<title>Docker镜像加速-老E的博客</title>
<style>
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
            line-height: 1.6;
            color: #3d3d3d;
            margin: 0;
            padding: 20px;
            background: #242424;
        }
        .container {
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            background: rgba(20, 19, 19, 0.8);
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        }
        h1, h2, h3 {
            color: #ece6ec;
        }
        p {
            margin-bottom: 1em;
            color: #f8f8f2;
        }
        pre {
            background: #2d2d2d;
            color: #f8f8f2;
            padding: 20px;
            border-radius: 8px;
            overflow-x: auto;
            position: relative;
        }
        pre::before {
            content: " ";
            display: block;
            position: absolute;
            top: 10px;
            left: 10px;
            width: 12px;
            height: 12px;
            background: #ff5f56;
            border-radius: 50%;
            box-shadow: 20px 0 0 #ffbd2e, 40px 0 0 #27c93f;
        }
        code {
            font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
            font-size: 0.875em;
        }
        .copy-button {
            position: absolute;
            top: 10px;
            right: 10px;
            background: #007aff;
            color: white;
            border: none;
            padding: 5px 10px;
            border-radius: 5px;
            cursor: pointer;
            opacity: 0;
            transition: opacity 0.3s;
        }
        pre:hover .copy-button {
            opacity: 1;
        }
        .footer {
            text-align: center;
            margin-top: 20px;
            color: #ece6ec;
            font-size: 0.875em;
        }
        .footer a {
            color: #007aff;
            text-decoration: none;
        }
        .footer a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>
<div class="container">
<center><h2><a href="https://appscross.com" target="_blank">自用</a> Docker Hub 镜像加速</h2></center>
<h3>为了加速镜像拉取,使用以下命令设置<b>registry mirror</b></h3>
<pre><code>
mkdir -p /etc/docker</code><button class="copy-button" onclick="copyCode(this)">复制代码</button></pre>
<pre><code>
tee /etc/docker/daemon.json &lt;&lt;EOF
{
    "registry-mirrors": ["https://docker.laoex.link"]
}
EOF</code><button class="copy-button" onclick="copyCode(this)">复制代码</button></pre>
<pre><code>
systemctl daemon-reload</code><button class="copy-button" onclick="copyCode(this)">复制代码</button></pre>
<pre><code>
systemctl restart docker</code><button class="copy-button" onclick="copyCode(this)">复制代码</button></pre>
<p><h3>不用设置环境也可以直接使用,用法示例:</h3></p>
<pre><code>
docker pull docker.laoex.link/library/mysql:8.0</code><button class="copy-button" onclick="copyCode(this)">复制代码</button></pre>
<p>说明:library是一个特殊的命名空间,它代表的是官方镜像。</p>
</div>
<div class="footer">
    &copy; <a href="https://appscross.com" target="_blank">老E的博客</a>自建镜像,请勿滥用。
</div>
<script>
        function copyCode(button) {
            const code = button.previousSibling;
            const textArea = document.createElement('textarea');
            textArea.value = code.textContent;
            document.body.appendChild(textArea);
            textArea.select();
            document.execCommand('copy');
            document.body.removeChild(textArea);
            button.textContent = '已复制';
            setTimeout(() => {
                button.textContent = '复制代码';
            }, 2000);
        }
    </script>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'896b4e01b8b8985b',t:'MTcxODg4MTc0Ni4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>

2.修改 src/index.js 文件,添加调用 html 文件的内容

然后添加 workers 路由(javascript),当打开域名时,将加载、显示 tips.html。务必确保第一行导入的 html 文件名是正确的。

import DOCS from './tips.html'
 
// return tips.html
if (url.pathname === "/") {
  return new Response(DOCS, {
    status: 200,
    headers: {
      "content-type": "text/html"
    }
  });
}

第三步 在 Cloudflare 部署

在 github 仓库点击『Deploy with workers』后,会自动跳转到授权、账号连接页面。

authorize workers

授权 workers 后,连接账户步骤,需要输入 cloudflare account id 和 api token。account id 可以在登录 cloudflare 后在仪表板中查看,api token 需要创建或轮换。

account id and api token of cloudflare

将账户 id 拷贝进项目的账户连接页面中后,回到 cloudflare ,点击『获取您的API令牌』创建(尚无)或轮换(已有)。创建cloudflare 令牌,应选择使用『编辑Cloudflare Workers』模板。

create api token of editing cloudflare workers

创建 api token 过程中,token 权限至少应包括相应账户、相应域的编辑。设置完成后,点击『继续以显示摘要』。

api token

在显示摘要页面,点击令牌显示框右侧的『Copy』即可,再返回项目账户链接与部署页面,粘贴到 API Token 对应位置。该 api token 仅一次可见,后续可进行轮换,没轮换一次,可见一次。

api token

完成账户连接后,点击『Deploy』开始部署,并激活 Github Action,由 Action 自动化部署到 workers,后续如有对项目的修改,也可以自动触发部署。

deploy end

进入部署阶段,由初始化开始,稍等片刻即可提示部署成功。有时由于网络等多种原因,会显示 fail/error 等部署不成功问题,这时在检查项目的前提下,可以登录 cloudflare 查看是否已创建了相应的 workers,不排除显示 fail 的情况下,cloudflare 已部署成功的可能。

init

部署完成后,登录 cloudflare,就可以看到 github action 自动创建的 workers,以及 workers 进行的配置和自动绑定的域名。检查无误后,我们就可以使用自己的专属 docker hub 加速镜像了,采用了可选步骤的情况下,浏览器输入域名也可以获得提示信息。

workers

更稳妥的建议

更为稳妥的方式一是可以将个人常用的镜像转储于国内平台,如通过 github action 自动转储于阿里云容器镜像服务,创建一个免费的个人实例即可,300 个镜像的免费配额,适合于需求非常清晰、明确的用户。

aliyun docker hub

限于篇幅,本文不做展开。国内原有公开 docker hub 加速站点以镜像加速为主,鲜有代理加速,受限于 docker 镜像无法实现的内容审查难度,以及可能发生了使用镜像传递非法内容的严重事件,因此几乎在一夜之间全部不再对外开放。阿里容器镜像服务已发布运营多年,应该有成熟的受官方认可的开放内容审查机制。

当然,最为稳妥的方案还是常备魔法,docker 镜像只是一例,也并非所有的软件包都会以 docker 镜像的形式传输,也并非所有的应用、开发工作仅依赖 docker。继续安利朋友的机场,不需要长期「订阅surfshark」等顶级主流VPN的小伙伴,可以尝试「领航机场」,¥9.9/月、1000G 流量。具体用法可参考下文:

「惊爆价每月14元-无限流量、无限制设备Surfshark内部促销怎么买最省钱」 ➥

「Surfshark-最好的VPN应该是这样的」 ➥

「开源全平台翻墙代理客户端的选择与使用--机场最佳实践」 ➥

更多精彩,敬请关注老E的博客!

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: Cloudflare docker vpn 代理 开源应用
最后更新:2024年8月12日

老E

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • 菜鸟

    github是复制过来的,修改成自己的域名后,由于无法将本项目隐藏,其他人进来是不是就看到我的域名了?

    2024年6月22日
    回复
    • webmaster

      @菜鸟 private

      2024年6月24日
      回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    站内搜索
    归档
    • 2025 年 5 月
    • 2025 年 4 月
    • 2025 年 3 月
    • 2025 年 2 月
    • 2025 年 1 月
    • 2024 年 12 月
    • 2024 年 11 月
    • 2024 年 10 月
    • 2024 年 9 月
    • 2024 年 8 月
    • 2024 年 7 月
    • 2024 年 6 月
    • 2024 年 5 月
    • 2024 年 4 月
    • 2024 年 3 月
    • 2024 年 2 月
    • 2024 年 1 月
    • 2023 年 12 月
    • 2023 年 11 月
    • 2023 年 10 月
    • 2023 年 9 月
    • 2023 年 8 月
    • 2023 年 7 月
    • 2023 年 6 月

    Copyright ©2023-2025 Appscross. All Rights Reserved.