概述
通过docker的方式快速的使用内网穿透工具frp。客户端和服务端的镜像都已经封装好了可以直接使用。当前版本是官网的0.44.0版本。
如果不需要镜像制作,可以直接通过快速开始直接使用。最后也会补上如何制作镜像的dockerfile。
快速开始
服务端部署
服务端需要部署到一台公网服务器上。
1)准备配置文件docker-compose.yml
docker-compose.yml
version: '3'
services:
frp:
image: ${image}
container_name: frp
restart: always
# network_mode: host
ports:
- 7000:7000
- 7500:7500
- 4000-5000:4000:5000
volumes:
- ${docker_volume_directory:-.}/frp/server/frps.ini:/app/frp/frps.ini
command: ./frps -c /app/frp/frps.ini
- 7000:客户端连接服务器的端口
- 7500:服务器的dashboard端口
- 4000-5000:可以使用的内网穿透端口。这里最好使用
network_mode: host
的网络模式,原因是大批量端口在docker中会消耗过多的资源如果使用主机映射的网络模式则会降低内存使用,特别是服务器内存不够的情况下。
2)准备环境变量文件.env
.env
image=registry.cn-hangzhou.aliyuncs.com/yangqiang-pub/frp-server:0.44.0
docker_volume_directory=/data/docker-data
- image:已经封装好的镜像。
- docker_volume_directory:数据文件目录,包括配置。
3) 准备配置文件frp/server/frps.ini
frp/server/frps.ini
在.env的统计目录下面新建文件frp/server/frps.ini
:
[common]
bind_addr = 0.0.0.0
bind_port = 7000
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = dashboard的密码
#log_file = /data/docker-data/frp/log/frps.log
#log_level = debug
#log_max_days = 3
authentication_method = token
token = 客户端连接服务端的密码
注意上面两个密码需要填写自己的密码
4)启动服务端
docker compose up -d
- 可以通过
docker logs -f --tail 100 frp
查看日志
客户端连接
在你需要内网穿透的电脑上,一般是自己本地的电脑或者本地服务器部署客户端。
1) 准备docker-compose.yml
docker-compose.yml
version: '3'
services:
frp-client:
image: ${image}
container_name: frp-client
restart: always
ports:
- 7400:7400
volumes:
- ${docker_volume_directory:-.}/frp/client/frpc.ini:/app/frp/frpc.ini
command: ./frpc -c /app/frp/frpc.ini
healthcheck:
test: ./frpc status || exit 1
interval: 5s
timeout: 3s
retries: 3
start_period: 1s
2) 准备环境变量文件.env
.env
image=registry.cn-hangzhou.aliyuncs.com/yangqiang-pub/frp-client:0.44.0
docker_volume_directory=/root/docker-data
3) 准备配置文件
frp/client/frpc.ini
[common]
token = 服务端的token密码
server_addr = 服务端ip
server_port = 7000
admin_addr = 0.0.0.0
admin_port = 7400
admin_user = admin
admin_pwd = 客户端管理密码,连接上管理端后可以新增穿透配置
# 配置客户端管理端穿透出去访问服务端ip:4000就可以访问
[dashboard]
type = tcp
local_ip = 本地ip
local_port = 7400
remote_port = 4000
# 配置一个ssh的内网穿透通过服务端ip:4022可以访问
[ssh]
type = tcp
local_ip = 本地或者局域网ip
local_port = 22
remote_port = 4022
4) 启动客户端
docker compose up -d
镜像制作
服务端
1) 准备dockerfile
Dockerfile
FROM alpine:latest
WORKDIR /tmp/
RUN cd /tmp/ && \
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz && \
tar -xvf /tmp/frp_0.44.0_linux_amd64.tar.gz && \
mkdir -p /app && \
mv /tmp/frp_0.44.0_linux_amd64 /app/frp && \
rm -rf /tmp/frp_0.44.0_linux_amd64.tar.gz
WORKDIR /app/frp
CMD ["./frps","-c","/app/frp/frps.ini"]
2)构建
docker build -t registry.cn-hangzhou.aliyuncs.com/yangqiang-pub/frp-server:0.44.0 .
客户端
dockerfile
FROM alpine:latest
WORKDIR /tmp/
RUN cd /tmp/ && \
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz && \
tar -xvf /tmp/frp_0.44.0_linux_amd64.tar.gz && \
mkdir -p /app && \
mv /tmp/frp_0.44.0_linux_amd64 /app/frp && \
rm -rf /tmp/frp_0.44.0_linux_amd64.tar.gz
WORKDIR /app/frp
CMD ["./frpc","-c","/app/frp/frpc.ini"]