Docker部署frp教程指南
为什么选择Docker部署frp
frp 是目前最流行的内网穿透工具之一,而 Docker 能帮我们免去手动编译、依赖安装的麻烦。
用 Docker 部署 frp 只需拉取官方镜像,挂载一个配置文件就能启动,升级或回退版本也只需更换镜像标签。
下面我按零基础能直接跟着做的顺序,把从准备到验证的完整流程拆开讲清楚。
第一步:准备服务器与安装Docker
你需要一台有公网 IP 的云服务器(用作服务端)和一台内网机器(用于客户端)。
服务端推荐 1 核 1G 以上配置,操作系统不限,但本文以 Ubuntu 22.04 为例。
先确认 Docker 已安装:
sudo docker --version
如果没有输出版本号,请执行安装命令:
curl -fsSL https://get.docker.com | sudo sh
安装完成后把当前用户加入 docker 组(避免每次加 sudo):
sudo usermod -aG docker $USER
newgrp docker
第二步:编写frp配置文件
Docker 容器内使用配置文件的方式是挂载本地目录。
建议在服务端和客户端分别创建 frp 工作目录。
服务端配置(frps.ini)
在服务端执行:
mkdir -p ~/frp-server && cd ~/frp-server
vim frps.ini
写入以下内容(端口根据需求调整):
[common]
bind_port = 7000
bind_addr = 0.0.0.0
vhost_http_port = 8080
token = your-secure-token-123
保存后退出。
其中 token 是连接密码,客户端必须一致。
客户端配置(frpc.ini)
在需要穿透的内网机器上执行:
mkdir -p ~/frp-client && cd ~/frp-client
vim frpc.ini
写入示例:
[common]
server_addr = 你的服务端公网IP
server_port = 7000
token = your-secure-token-123
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
remote_port = 8080
这个配置将内网机器上 8080 端口的 web 服务暴露到服务端的 8080 端口。
第三步:启动frp容器
启动服务端
docker run -d --name frps --restart=always \
-p 7000:7000 -p 8080:8080 \
-v ~/frp-server/frps.ini:/etc/frp/frps.ini \
snowdreamtech/frps:latest
注意:-p 参数要把配置文件中使用的端口都映射出来(bind_port、vhost_http_port 等)。
启动客户端
docker run -d --name frpc --restart=always \
--network host \
-v ~/frp-client/frpc.ini:/etc/frp/frpc.ini \
snowdreamtech/frpc:latest
--network host 让客户端直接使用宿主机网络,避免端口映射冲突(尤其在内网机器上)。
第四步:验证穿透是否生效
先在服务端检查 frps 日志:
docker logs frps --tail 20
看到类似 start frps success 和 bind on port 7000 说明启动正常。
再查看客户端 frpc 日志:
docker logs frpc --tail 20
如果出现 login to server success 并且 start proxy success,说明连接成功。
此时在浏览器访问 http://服务端公网IP:8080,应该能看到内网机器上的 web 服务页面。
避坑与高频问题解答
Q:客户端一直报 login error?
- 检查服务端防火墙是否放行了 7000 端口(以及你配置的其他端口)。
- 确认 frps.ini 和 frpc.ini 中的 token 完全一致,无多余空格。
Q:服务端端口被占用怎么办?
- 修改 frps.ini 中的 bind_port 为其他值,比如 7001。注意同时修改
-p参数和客户端 server_port。
Q:容器启动后立刻退出?
- 用
docker logs 容器名查看错误信息,通常是配置文件格式错误或路径挂载不对。检查 frp.ini 是否为纯文本、无 BOM 头。
Q:穿透后访问很慢?
- 内网穿透速度受限于服务端带宽,建议在服务端开启 frps Dashboard 监控流量,或改用 TCP 模式减少协议开销。
总结
通过 Docker 部署 frp 确实能大幅降低门槛。
你只需要准备两个配置文件,执行两段 docker run 命令,就能在内网和外网之间架起一座隧道。
建议在正式使用前先做一次完整的 Docker 部署 frp 流程验证,确保 token 和端口无误后再投入生产。
如果在操作中遇到其他报错,优先检查防火墙和日志输出,这俩能解决 90% 的问题。