Docker方式使用内网穿透frp

概述

通过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"]

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code