使用 cloudflare 解决docker镜像问题

简介: 无聊的人才搞这么复杂,我推荐使用更简单有效的方法:https://developer.aliyun.com/article/1575426

前提条件:

1、cloudflare 账号

2、一个域名,需要将dns服务器指向 cloudflare 进行托管

一、首先安装 wrangler 命令行工具

1、 安装 npm 服务

image.png

  • 声明npm代理
npm config set registry https://registry.npmmirror.com
2、安装 wrangler 工具
npm install wrangler --save-dev
3、登录授权 wrangler
npx   wrangler login

image.png


二、配置 cloudflare 的 worker 项目

1、安装 git 工具
2、下载 hammal 项目
git clone https://github.com/tomwei7/hammal.git
cd hammal
copy wrangler.toml.sample wrangler.toml

image.png

配置文件中,需要修改几个内容:

  • account_id 通过下面命令获取
npx wrangler whoami

image.png

  • name 自定义,如设置:docker-proxy
  • 添加内容
main = "src/index.ts"
compatibility_date = "2022-10-29"
  • kv_namespace 中,binding保持不变,id通过下面命令创建获取
npx  wrangler kv:namespace create docker-proxy


image.png

3、部署应用
npx  wrangler deploy

image.png


三、绑定自定义域名发布

1、在任意厂商申请一个域名,在cloudflare进行绑定

image.png

2、按照提示,修改dns服务器,指向 cloudflare
3、在 worker 项目中,添加绑定的域名

image.png

四、修改 docker 配置文件,添加代理域名

1、修改 /etc/docker/daemon.json 文件,内容如下
root@server:~# cat /etc/docker/daemon.json
{
  "default-address-pools": [
      {"base": "172.16.0.0/16", "size":24}
  ],
  "registry-mirrors": ["https://****.****.xyz"]  #这里写上面绑定的域名
}
2、进行测试
root@server:~# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
2cc3ae149d28: Already exists 
a97f9034bc9b: Pull complete 
9571e65a55a3: Pull complete 
0b432cb2d95e: Pull complete 
24436676f2de: Pull complete 
928cc9acedf0: Pull complete 
ca6fb48c6db4: Pull complete 
Digest: sha256:56b388b0d79c738f4cf51bbaf184a14fab19337f4819ceb2cae7d94100262de8
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

3、该项目也可以加速 k8s.gcr.io, gcr.io, quay.io 的镜像

# 拉取 k8s.gcr.io 镜像
docker pull hammal.{your_name}.workers.dev/k8sgcr/kubernetes-dashboard-amd64:v1.8.3
# 拉取 gcr.io 镜像
docker pull hammal.{your_name}.workers.dev/gcr/youlib/image:tags
# 拉取 quay.io 镜像
docker pull hammal.{your_name}.workers.dev/quay/coreos/flannel:v0.13.1-rc2

image.png


免费计划支持每天 10w 次的请求调用,足以满足日常用户使用

image.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
347 100
|
2月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
278 99
|
2月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
294 98
|
2月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
7月前
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
1599 32
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
347 5
|
2月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
178 8
|
3月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
283 16
kde
|
4月前
|
Docker 容器 应用服务中间件
Docker 客户端是如何拉取镜像的?
Docker客户端拉取镜像的过程遵循Docker Registry HTTP API V2规范,主要分为解析镜像名、鉴权、获取Manifest、拉取Layers及本地合并五个步骤。它与Docker Hub、Harbor等仓库通信,确保镜像正确下载和构建。
kde
771 59
|
3月前
|
运维 关系型数据库 数据库
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami
随着云原生发展,部署工具从 Bitnami 转向 Websoft9。后者基于官方镜像,提供多应用编排与统一运维,提升部署效率与维护能力,适合多系统协同场景。
应用官方 Docker 镜像已成熟,团队为何转向 Websoft9 而不再依赖 Bitnami