使用 Docker / Podman 部署 Frpc 内网穿透客户端

使用 Docker / Podman 部署 Frpc 内网穿透客户端

GT610 Lv4

📌 背景

上一篇文章介绍了如何在 Docker / Podman 中搭建 frps 内网穿透服务器,对于 frpc 客户端,同样可以通过 Docker / Podman 来进行部署。

什么是 frp?

frp 是一款 Go 语言编写的,高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。frp 采用 C/S 模式,服务端部署在公网服务器上,客户端连接服务端并配置端口和协议,然后就可以通过公网服务器的对应端口连接客户端服务了。

🌐 环境要求

组件 要求
网络 能访问服务端
系统 Linux
软件 Docker / Podman 容器

🛠️ 准备工作

安装容器运行时

如果你尚未安装容器运行时,请先安装。Docker 或 Podman 均可。

相比 Docker,Podman 有许多优势。我推荐使用 Podman。

Docker

建议参考官方文档安装。

输入以下命令安装 Docker 和 Docker Compose:

1
2
3
4
5
6
# 安装 Docker
sudo apt update && sudo apt install docker.io -y

# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Podman

根据系统类型,选择正确的命令安装 Podman:

1
2
# Debian / Ubuntu
sudo apt update && sudo apt install podman podman-compose -y
1
2
# Fedora / CentOS / RHEL
sudo dnf install podman podman-compose -y

🖊️ 创建 frpc 配置文件

frpc 支持 TOML / YAML / JSON 格式的文件。旧版本的 ini 配置格式已经弃用。

具体的配置可以参考官方文档。这里给出一些常用的配置示例以及解释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 服务端地址,在双引号内填写
serverAddr = ""
# 服务端端口,需要与服务端实际的监听端口保持一致
serverPort = 7000
# 连接密钥,在双引号内填写。需要与服务端保持一致
auth.token= ""

# 一个示例的穿透配置。可以通过添加多个 proxies 字段来配置置多个穿透。
[[proxies]]
# 配置名称,在双引号内填写。名称任意。
name = ""
# 穿透类型,目前支持 tcp、udp、http、https。
type = "tcp"
# 监听的本机 IP 地址,在双引号内填写。
localIP = "127.0.0.1"
# 监听的本机端口。
localPort =
# 映射到服务端的哪一个端口。填写的端口不可用时,frp 会自动分配一个可用的端口。
remotePort =

填写完成后保存为 frpc.toml 文件。

📦 使用 Docker Compose 部署 frpc

创建容器

这里推荐使用 Docker Compose / Podman Compose 来进行部署。frp 官方未提供 Docker 镜像,这里我们使用用户构建的 frpc 镜像:snowdreamtech/frpc

以下为我的 YAML 配置文件:

1
2
3
4
5
6
7
8
services:
frpc:
image: snowdreamtech/frpc
container_name: frpc
restart: unless-stopped
network_mode: host
volumes:
- /[配置文件目录]/frpc.toml:/etc/frp/frpc.toml

解释

  1. 网络模式 network_mode:使用主机网络模式 host。frpc 将直接使用主机的 IP 地址和端口。这里必须指定为 host,否则无法穿透。

  2. 挂载卷 volumes:将 frpc.toml 文件挂载到容器中。冒号前面的路径请修改为宿主机实际的配置文件路径,冒号后面的路径不可更改

将上述配置文件代码复制下来,修改好后保存到服务器上,并运行以下命令:

Docker

1
docker-compose -f 配置文件名 up -d

Podman

1
podman-compose -f 配置文件名 up -d

验证服务是否正常运行

1
docker logs -f frpc

如果看到如下输出,则表示服务已经正常运行:

1
2
3
4
5
2025-09-23 07:27:40.113 [I] [sub/root.go:149] start frpc service for config file [/etc/frp/frpc.toml]
2025-09-23 07:27:40.113 [I] [client/service.go:319] try to connect to server...
2025-09-24 00:06:28.801 [I] [client/service.go:311] [] login to server success, get run id []
2025-09-24 00:06:28.801 [I] [proxy/proxy_manager.go:177] [] proxy added: [(穿透名称)]
2025-09-24 00:06:28.819 [I] [client/control.go:172] [] [(穿透名称)] start proxy success

然后就可以尝试通过公网对应端口连接内网服务了!

  • 标题: 使用 Docker / Podman 部署 Frpc 内网穿透客户端
  • 作者: GT610
  • 创建于 : 2025-09-24 09:32:22
  • 更新于 : 2025-09-24 09:34:55
  • 链接: https://gt-610.dpdns.org/2025/09/24/docker-frpc/
  • 版权声明: 本文章采用 CC BY 4.0 进行许可。
评论