编辑
2025-10-17
Docker备份教学
00
请注意,本文编写于 97 天前,最后修改于 97 天前,其中某些信息可能已经过时。

目录

FRPC Docker 多实例部署说明文档
📋 项目简介
为什么需要部署多个 FRPC 实例?
🚀 快速开始
环境要求
目录结构
📝 配置文件说明
1. docker-compose.yml 配置
配置项说明:
2. frpc.toml 配置文件格式
完整配置示例:
配置项详细说明:
全局配置部分
代理配置部分
🔧 启动命令
启动单个实例
常用管理命令
📊 多实例部署策略
推荐配置方案
注意事项
🔍 故障排查
常见问题
📚 参考资源
📝 更新日志
💡 技术支持

FRPC Docker 多实例部署说明文档

📋 项目简介

本项目使用 Docker Compose 部署多个 FRPC(Fast Reverse Proxy Client)实例,实现内网穿透服务的高可用性。说明文档全部由ai生成,相关配置文件由本人修改。

为什么需要部署多个 FRPC 实例?

在传统的单 FRPC 部署方案中,存在以下问题:

  • 单点故障风险:如果唯一的 FRPC 实例出现问题或者对应的 FRPS 服务器失联,所有下游终端都会失去连接
  • 服务可用性低:无法实现故障转移和负载均衡
  • 维护困难:更新或重启服务时会导致所有连接中断

解决方案:通过 Docker 部署多个 FRPC 实例,连接到不同的 FRPS 服务器,实现:

  • ✅ 高可用性:一个 FRPS 失联不影响其他连接
  • ✅ 故障转移:自动切换到可用的服务器
  • ✅ 易于管理:Docker 容器化管理,重启和更新更方便
  • ✅ 资源隔离:每个实例独立运行,互不影响

🚀 快速开始

环境要求

  • Docker(内置 Docker Compose V2)

目录结构

📝 配置文件说明

1. docker-compose.yml 配置

yaml
services: frps: # 服务名称 container_name: frpc1 # 容器名称(建议修改为有意义的名称) image: snowdreamtech/frpc:latest # FRPC 镜像(建议指定版本号) labels: createdBy: Apps # 标签,用于标识创建者 network_mode: host # 使用宿主机网络(重要!) restart: always # 容器自动重启策略 volumes: - ./data/frpc.toml:/etc/frp/frpc.toml # 挂载配置文件

配置项说明:

配置项说明建议
container_name容器名称,用于标识不同的实例使用有意义的名称,如 frpc-aliyun、frpc-tencent
imageDocker 镜像建议使用固定版本号,如 snowdreamtech/frpc:0.63.0
network_mode: host使用主机网络模式必须保持,否则内网穿透无法正常工作
restart: always自动重启策略保持 always,确保服务持续运行
volumes配置文件挂载路径根据实际路径调整

2. frpc.toml 配置文件格式

FRPC 使用 TOML 格式配置文件(新版本已不再使用 INI 格式)。

完整配置示例:

toml
# ============================================ # FRPC 新版 TOML 配置 # ============================================ # ---- 全局配置 ---- serverAddr = "frp.example.com" # FRPS 服务器地址(IP或域名) serverPort = 7000 # FRPS 服务器端口 auth.method = "token" # 认证方式 auth.token = "your_token_here" # 认证密钥(必须与服务端一致) # Web 管理界面配置(可选) webServer.addr = "127.0.0.1" # Web 界面监听地址 webServer.port = 7400 # Web 界面端口(不同实例需使用不同端口) webServer.user = "admin" # Web 界面用户名 webServer.password = "password" # Web 界面密码 # ---- 代理配置 ---- # TCP 代理示例 [[proxies]] name = "ssh" # 代理名称(必须唯一) type = "tcp" # 代理类型:tcp/udp/http/https localIP = "192.168.1.100" # 本地目标服务器IP localPort = 22 # 本地目标服务器端口 remotePort = 6000 # 远程服务器映射端口 # HTTP 代理示例 [[proxies]] name = "web" type = "http" localIP = "192.168.1.100" localPort = 80 customDomains = ["www.example.com"] # 自定义域名 # HTTPS 代理示例 [[proxies]] name = "web-ssl" type = "https" localIP = "192.168.1.100" localPort = 443 customDomains = ["www.example.com"] # UDP 代理示例 [[proxies]] name = "dns" type = "udp" localIP = "192.168.1.100" localPort = 53 remotePort = 6001

配置项详细说明:

全局配置部分
配置项必填说明示例
serverAddrFRPS 服务器地址"frp.example.com""1.2.3.4"
serverPortFRPS 服务器端口7000
auth.method认证方式"token"
auth.token认证密钥"your_secret_token"
webServer.addrWeb 管理界面地址"127.0.0.1"
webServer.portWeb 管理界面端口7400
webServer.userWeb 界面用户名"admin"
webServer.passwordWeb 界面密码"password"
代理配置部分

每个代理配置使用 [[proxies]] 开头,支持以下配置:

配置项必填说明适用类型
name代理名称(唯一标识)所有类型
type代理类型tcp/udp/http/https/stcp/xtcp
localIP本地目标IP地址所有类型
localPort本地目标端口所有类型
remotePort远程映射端口tcp/udp
customDomains自定义域名(数组)http/https
subdomain子域名http/https

🔧 启动命令

⚠️ 命令格式说明

本文档使用 Docker Compose V2 的命令格式:docker compose(带空格)

  • 推荐使用docker compose (Docker Compose V2,Docker 内置插件)
  • 旧版本docker-compose (Docker Compose V1,独立命令行工具)

Docker Compose V2 已集成到 Docker CLI 中,无需单独安装。如果你的系统仍使用 V1,建议升级到最新版本的 Docker。

启动单个实例

bash
# 进入对应目录 cd frpc # 启动容器(后台运行) docker compose up -d # 查看容器日志 docker compose logs -f # 停止容器 docker compose down # 重启容器 docker compose restart

常用管理命令

bash
# 查看所有 FRPC 容器状态 docker ps -a | grep frpc # 查看特定容器日志 docker logs -f frpc1 # 进入容器内部 docker exec -it frpc1 sh # 重启所有 FRPC 容器 docker restart $(docker ps -a | grep frpc | awk '{print $1}') # 停止所有 FRPC 容器 docker stop $(docker ps -a | grep frpc | awk '{print $1}') # 更新镜像 docker compose pull docker compose up -d

📊 多实例部署策略

推荐配置方案

  1. 主备模式

    • 主实例:连接主 FRPS 服务器
    • 备用实例:连接备用 FRPS 服务器
    • 使用相同的代理配置和端口
  2. 负载均衡模式

    • 多个实例连接不同的 FRPS 服务器
    • 不同服务分配到不同实例
    • 分散负载,提高性能
  3. 地域分布模式

    • 根据 FRPS 服务器地理位置选择
    • 降低延迟,提高访问速度

注意事项

⚠️ 重要提示

  1. Web 管理端口冲突:每个实例的 webServer.port 必须不同

    toml
    # 实例1 webServer.port = 7400 # 实例2 webServer.port = 7401 # 实例3 webServer.port = 7402
  2. 容器名称唯一性:每个容器的 container_name 必须不同

  3. 代理名称唯一性:同一 FRPS 服务器上的代理名称不能重复

  4. 端口映射冲突:不同实例连接同一 FRPS 时,remotePort 不能重复

  5. 配置文件路径:确保 volumes 挂载路径正确


🔍 故障排查

常见问题

  1. 容器无法启动

    bash
    # 查看详细错误信息 docker compose logs # 检查配置文件语法 docker run --rm -v $(pwd)/frpc.toml:/frpc.toml snowdreamtech/frpc:latest /usr/bin/frpc verify -c /frpc.toml
  2. 无法连接 FRPS

    • 检查 serverAddrserverPort 是否正确
    • 检查 auth.token 是否与服务端一致
    • 检查网络连接和防火墙设置
  3. 端口映射失败

    • 确认 remotePort 在 FRPS 允许范围内
    • 检查端口是否被占用
    • 确认 network_mode: host 已正确配置
  4. 配置修改后不生效

    bash
    # 重启容器使配置生效 docker compose restart

日志查看

bash
# 实时查看日志 docker compose logs -f # 查看最近 100 行日志 docker compose logs --tail=100 # 查看特定时间段日志 docker logs --since="2024-01-01" --until="2024-01-02" frpc1

📚 参考资源


📝 更新日志

  • v1.0 - 初始版本,支持多实例部署
    • 使用 Docker Compose V2 管理容器
    • 采用 docker compose 命令格式(而非旧版的 docker-compose
    • 支持 TOML 配置格式
    • 提供完整的配置说明和启动命令

💡 技术支持

如有问题,请检查:

  1. Docker 和 Docker Compose 是否正确安装
  2. 配置文件格式是否正确
  3. FRPS 服务器是否可访问
  4. 防火墙和网络设置是否正确

compose文件及toml配置文件下载地址:蓝奏云

本文作者:口水

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!