通过 cloudflared 把容器运行本地服务暴露到公网。
env
- ubuntu22.04-LTS
- cloudflared + continerd
1.下载 cloudflared
1
| !wget -q -c https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -O c
|
wget 下载 Cloudflare 提供的 cloudflared 客户端二进制文件。
-q: 安静模式(不输出信息)。
-c: 支持断点续传。
-O c: 将下载的文件重命名为 c。
2.赋予执行权限
3.安装 udocker
- 安装
udocker 工具,便于在 无 root 权限 环境中运行 Docker 镜像(如某些 HPC、Colab 环境)。
4.拉取镜像
1
| !udocker --allow-root pull zhu327/gemini-openai-proxy:latest
|
- 使用
udocker 从 Docker Hub 拉取 zhu327/gemini-openai-proxy 镜像的最新版。
--allow-root 允许在 root 用户下运行 udocker,默认情况下会警告或禁止。
5.创建容器实例
1
| !udocker --allow-root create --name=gemini zhu327/gemini-openai-proxy:latest
|
- 基于刚才拉取的镜像创建一个名为
gemini 的容器。
6.启动Cloudflare隧道 + 启动容器
1
| !./c tunnel --url http://localhost:8443 & udocker --allow-root run -p 8443:8080 gemini
|
./c tunnel --url http://localhost:8443:
- 启动 Cloudflare 隧道,把本地的
8443 端口暴露到公网,获取一个类似 https://xxxxx.trycloudflare.com 的公网地址。
& 表示在后台运行该命令。
udocker ... run -p 8443:8080 gemini:
- 启动
gemini 容器,将容器内的 8080 端口映射到宿主机的 8443 端口。
启动 Cloudflare tunnel 和容器之后,通常需要等待几秒钟;
cloudflared 会输出你公网可访问的链接;
例如:https://randomstring.trycloudflare.com
7.总结流程图
[容器8080端口] ← 8443端口 ← [宿主机] ← cloudflared ← [公网临时地址]
↑ ↑
gemini-openai-proxy https://xxxx.trycloudflare.com
8.作用总结
这是一种在无公网 IP、无 root、甚至无法装 Docker 的环境中:
- 启动一个代理服务(
gemini-openai-proxy);
- 并通过 Cloudflare 暴露到公网;
- 方便外部访问该服务,例如用于调试或部署 LLM 代理接口等。