首页 > 其他分享 >使用docker启动frp内网穿透

使用docker启动frp内网穿透

时间:2023-01-02 11:35:10浏览次数:64  
标签:配置文件 frps -- frp frpc docker 内网

frp是内网穿透工具,客户端和服务端分别为frpc和frps,frpc安装在本地机器、frps安装在拥有公网IP的机器中。
本文主要介绍如何使用docker分别运行frpc和frps。
优点:配置文件(包含密码和公网IP等重要信息)可保留在本机,docker容器可推送至任意镜像仓库,当更换服务器或者新增一个客户端时可以复用镜像,较为简洁。

安装篇

frpc安装

本地机器安装frpc,用于连接frps,将自身服务穿透到外网从而获得公网服务效果
安装流程分3步:

  1. 准备好配置文件,注意修改tokenserver_addr
mkdir -p /etc/myconf/frp
cat >/etc/myconf/frp/frpc.ini<<EOF 
[common]
server_addr = x.x.x.x
server_port = 7000


[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[auth]
token = 你的密码
EOF  
  1. 构建镜像。
# 注意区分Linux和处理器架构hostnamectl可查看
mkdir /tmp/frpc && cd /tmp/frpc

# 需提前安装docker 可执行curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

platform='unknown'
unamestr=$(uname)
if [ "$unamestr" = 'Linux' ]; then
   platform='linux'
elif [ "$unamestr" = 'FreeBSD' ]; then
   platform='freebsd'
elif [ "$unamestr" = 'Darwin' ]; then
   platform='darwin'
fi

arch='unknown'
archstr=$(uname -m)
if [ "$archstr" = 'aarch64' ] || [ "$archstr" = 'arm64' ] ; then
   arch='arm64'
elif [ "$archstr" = 'x86_64' ]; then
   arch='amd64'
fi

cat >/tmp/frpc/Dockerfile<<EOF  
FROM busybox
WORKDIR /frpc

RUN wget https://github.com/fatedier/frp/releases/download/v0.46.0/frp_0.46.0_linux_arm64.tar.gz && tar -zxvf *.tar.gz
RUN cd $(ls | grep frp | grep -v gz) && cp * /frpc
ENTRYPOINT ["./frpc", "-c", "/mnt/frp/frpc.ini"]
EOF

sed -i "s/linux/$platform/g" /tmp/frpc/Dockerfile
sed -i "s/arm64/$arch/g" /tmp/frpc/Dockerfile

docker build -t frpc:1 /tmp/frpc
  1. 运行frpc容器
docker run --name frpc --net=host --restart=always -v /etc/myconf/frp:/mnt/frp -d frpc:1
  • 容器使用host主机网络,代表直接操作主机网络。
  • --restart=always保证本机重启后frp服务自动启动
  • -v /etc/myconf/frp:/mnt/frp将配置文件挂载到frp容器中

如果发现哪个配置项错了,请执行 docker stop frpc && docker rm frpc 并重新执行前面的1、2步骤

frpc推荐配置文件

[common]
# x.x.x.x修改为自己的公网IP
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[auth]
token = 你的密码

frps安装

(重要描述)目前全球公网IP即将耗尽,用户获取IPv4的方式大多通过云服务器,而通常购买的是年付云主机,因此推荐使用docker方式安装frps,并将配置文件存储到本地机器,在启动frps服务时将调整好的配置文件挂载至docker容器中
安装流程分3步:

  1. 准备好配置文件
mkdir -p /etc/myconf/frp
cat >/etc/myconf/frp/frps.ini<<EOF 
[common]
bind_port = 7000

[auth]
token = 你的密码
EOF
  1. 构建docker镜像或直接使用我的zzc932/frps:v2.1。注意区分自己的处理器类型,到release页面找到对应的链接内容并修改下文的https://github.com/fatedier/frp/releases/download/v0.46.0/frp_0.46.0_linux_amd64.tar.gz && tar -zxvf *.tar.gz
# 注意区分Linux和处理器架构hostnamectl可查看
mkdir /tmp/frps && cd /tmp/frps
platform='unknown'
unamestr=$(uname)
if [ "$unamestr" = 'Linux' ]; then
   platform='linux'
elif [ "$unamestr" = 'FreeBSD' ]; then
   platform='freebsd'
elif [ "$unamestr" = 'Darwin' ]; then
   platform='darwin'
fi

arch='unknown'
archstr=$(uname -m)
if [ "$archstr" = 'aarch64' ] || [ "$archstr" = 'arm64' ] ; then
   arch='arm64'
elif [ "$archstr" = 'x86_64' ]; then
   arch='amd64'
fi


# 需提前安装docker
cat >/tmp/frps/Dockerfile<<EOF  
FROM busybox
WORKDIR /frps
RUN wget https://github.com/fatedier/frp/releases/download/v0.46.0/frp_0.46.0_linux_arm64.tar.gz && tar -zxvf *.tar.gz
RUN cd $(ls | grep frp | grep -v gz) && cp * /frps
ENTRYPOINT ["./frps", "-c", "/mnt/frp/frps.ini"]
EOF
# 替换对应的内核和架构
sed -i "s/linux/$platform/g" /tmp/frpc/Dockerfile
sed -i "s/arm64/$arch/g" /tmp/frpc/Dockerfile


docker build -t frps:1 /tmp/frps
  1. 运行frps服务
docker run --name frps --net=host --restart=always -v /etc/myconf/frp:/mnt/frp -d frps:1
  • 容器使用host主机网络,代表直接操作主机网络。
  • --restart=always保证本机重启后frp服务自动启动
  • -v /etc/myconf/frp:/mnt/frp将配置文件挂载到frp容器中

如果发现哪个配置项错了,请执行 docker stop frps && docker rm frps 并重新执行前面的1、2步骤

标签:配置文件,frps,--,frp,frpc,docker,内网
From: https://www.cnblogs.com/nishiliu/p/17015979.html

相关文章

  • Docker私有仓库
    1、下载镜像:dockerpullregistry2、运行私有库:dockerrun-d-p5000:5000-v/[宿主机绝对路径目录]/......
  • Docker Hub All In One
    DockerHubAllInOneDockerHubregistry$dockersearchcowsay$dockerpullrancher/cowsay#查看本地镜像$dockerimages$dockerrunrancher/cowsayH......
  • Docker操作逻辑及搭建web
    Docker操作逻辑当我们使用pull从docker仓库中将镜像下载到本地,也就是可以通过dockerimages查看到pull到的镜像,下载后,可以通过dockerrun将镜像启动运行在容器(Contaier)中......
  • 安装Docker——镜像加速
    Docker的安装Docker的官网必须是Centos7版本,最好是7.7的内核,docker目前不支持Centos8Docker源路径的寻找因为官网的Docker的repo源是通过走国外的网站来获取的,对于网......
  • Docker配置mysql主从复制
    ---先创建master实例dockerrun-p3307:3306--namemysql-master\-v/mydata/mysql-master/log:/var/log/mysql\-v/mydata/mysql-master/data:/var/lib/mysql\-v/myd......
  • Docker容器之——Docker常用命令
    1.docker帮助命令dockerversion#显示docker版本信息dockerinfo#显示docker信息系统,包括镜像和容器数量docker--help#docker帮助命令2.docker镜像命令docke......
  • docker基础之镜像概念(四)
     什么是镜像镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配......
  • 关于内网穿透解决企本地调试微回调问题
    在做企微开发时,本地系统需要做到与企微数据进行实时的同步,以保证本地数据是最新的,保证企业服务人员获取到的客户信息都是最新的,提供更好的服务;对此,我们就必须要对接企微回......
  • WSL2清理占用的磁盘空间 WSL下Docker启动SQL Server 2019
    WSL下Docker中启动SQLServer2019开启Dockerdeamon服务命令sudoservciedockerstart拉取镜像dockerpullmcr.microsoft.com/mssql/server:2019-latest启......
  • 【JVM故障问题排查心得】「内存诊断系列」Xmx和Xms的大小是小于Docker容器以及Pod的大
    为什么我设置的大小关系没有错,还会OOMKilled?这种问题常发生在JDK8u131或者JDK9版本之后所出现在容器中运行JVM的问题:在大多数情况下,JVM将一般默认会采用宿主机Node节点的......