docker部署frps

简介: docker部署frps

以容器的方式部署frps

准备工作

  • 准备目录
[root@k81 ~]# mkdir -p frps/frps-dockerfile 
  • 上官网下载frp的可执行文件
[root@k81 ~]# cd frps/frps-dockerfile
[root@k81 frps-dockerfile]# wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz
# 如果下载不下来也可以用这个链接  https://gh.con.sh/https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz 尝试 
  • 删除不需要的文件并重新打包
[root@k81 frps-dockerfile]# tar -xf frp_0.48.0_linux_amd64.tar.gz
[root@k81 frps-dockerfile]# cd frp_0.48.0_linux_amd64
[root@k81 frp_0.48.0_linux_amd64]# rm -f frpc*  # 因为是做frps的容器,frpc没用就给删掉了,如果做frpc的镜像可以删除frps*
[root@k81 frps-dockerfile]# cd ..
[root@k81 frps-dockerfile]# mv frp_0.48.0_linux_amd64 frps && tar czf frps.tgz frps # 重新打包  


构建镜像

  • 编写dockerfile
[root@k81 frps-dockerfile]# cat  > Dockerfile <<EOF
FROM alpine:latest
MAINTAINER xiaohu
ADD ./frps.tgz /  # 这里add的源文件一定要和上面的压缩包一致
WORKDIR /frps
CMD ["./frps", "-c", "./frps.ini"]
EOF  
  • build镜像
[root@k81 frps-dockerfile]# docker build -t frps_xiaohu:0.1
ERROR: "docker buildx build" requires exactly 1 argument.
See 'docker buildx build --help'.
Usage:  docker buildx build [OPTIONS] PATH | URL | -
Start a build
## 第一次build的时候报了一个error
## 因此修改了一下build的命令
[root@k81 frps-dockerfile]# docker buildx build -t frps_xiaohu:0.1 .
[+] Building 2.2s (8/8) FINISHED                                                                                                          
 => [internal] load build definition from Dockerfile                                                                                 0.0s
 => => transferring dockerfile: 142B                                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                    0.0s
 => => transferring context: 2B                                                                                                      0.0s
 => [internal] load metadata for docker.io/library/alpine:latest                                                                     1.6s
 => [internal] load build context                                                                                                    0.1s
 => => transferring context: 5.82MB                                                                                                  0.1s
 => CACHED [1/3] FROM docker.io/library/alpine:latest@sha256:124c7d2707904eea7431fffe91522a01e5a861a624ee31d03372cc1d138a3126        0.0s
 => [2/3] ADD ./frps.tgz /                                                                                                           0.3s
 => [3/3] WORKDIR /frp                                                                                                               0.0s
 => exporting to image                                                                                                               0.1s
 => => exporting layers                                                                                                              0.1s
 => => writing image sha256:3f4e30f5ddf0527c23ecf39cfdee714247c5789e46b05571136a5f99f8392ae0                                         0.0s
 => => naming to docker.io/library/frps_xiaohu:0.1 
  • 检查镜像
[root@k81 frps-dockerfile]# docker images |egrep -i "size|^frps"
REPOSITORY                                            TAG                 IMAGE ID       CREATED          SIZE
frps_xiaohu                                           0.1                 7adc9914cd05   25 minutes ago   22.6MB
# 可以看到镜像size只有22.6MB,还是比较小巧的
[root@k81 frps-dockerfile]# docker history frps_xiaohu:0.1 
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
7adc9914cd05   25 minutes ago   CMD ["./frps" "-c" "./frps.ini"]                0B        buildkit.dockerfile.v0
<missing>      25 minutes ago   WORKDIR /frps                                   0B        buildkit.dockerfile.v0
<missing>      29 minutes ago   ADD ./frps.tgz / # buildkit                     15.5MB    buildkit.dockerfile.v0
<missing>      29 minutes ago   MAINTAINER xiaohu                               0B        buildkit.dockerfile.v0
<missing>      3 weeks ago      /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B        
<missing>      3 weeks ago      /bin/sh -c #(nop) ADD file:9a4f77dfaba7fd2aa…   7.05MB  


docker-compose跑起来

  • 准备frps.ini
[root@k81 frps]# cd /root/frps
[root@k81 frps]# cat > frps.ini <<EOF
[common]
bind_port = 6000
dashboard_addr = 0.0.0.0  # web页面的登录地址,0.0.0.0表示所有地址
dashboard_port = 6001  # web界面的端口
dashboard_user = xxx  # web的user
dashboard_pwd = xxx # web的密码
EOF
# 具体配置文件写法可以参考官方文档  

准备docker-compose.yaml  

[root@k81 frps]# cat > docker-compose.yaml  <<EOF
version: "3"
services:
  frps:
    image: frps_xiaohu:0.1
    container_name: My-frps
    restart: always
    ports:
    - "6000-6040:6000-6040"  # 这些端口后面可以用来做穿透
    volumes:
    - './frps.ini:/frps/frps.ini'
EOF 
  • 启动
[root@k81 frps]# docker-compose up -d 
Creating My-frps ... done
[root@i-9d1eq6no frps]# docker-compose top
My-frps
UID     PID    PPID    C   STIME   TTY     TIME             CMD         
------------------------------------------------------------------------
root   31619   31600   4   23:14   ?     00:00:00   ./frps -c ./frps.ini 


客户端运行frpc

如需要客户端也使用容器运行的话,可以参考服务端的容器构建


考虑到有些客户端没有跑容器,我这边就直接用二进制在客户端跑frpc了  


准备工作

  • 下载可执行文件
[root@c-2 ~]# wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.g
# 如果下载不下来也可以用这个链接  https://gh.con.sh/https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz 尝试
[root@c-2 ~]# tar -xf frp_0.48.0_linux_amd64.tar.gz -C /opt/
[root@c-2 ~]# cd /opt/
[root@c-2 opt]# mv frp_0.48.0_linux_amd64/ frpc && cd  frpc
[root@c-2 frpc]# rm -f frps*
[root@c-2 frpc]# ls 
  • 准备frpc.ini
[root@c-2 frpc]# cat > frpc.ini <<EOF
[common]
server_addr = xxx # frps的公网IP
server_port = 6000
[ssh_xgyt_c5]
type = tcp
local_port = 22
remote_port = 6003
EOF 


运行frpc

[root@c-2 frpc]# ./frpc -c ./frpc.ini
# 看看是否有错误,没错误的话就可以 CTRL C中断下一步了
[root@c-2 frpc]# cat > /etc/systemd/system/frpc.service <<EOF  # 编写一个service文件
[Unit]
Description=frpc
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/opt/frpc/frpc -c /opt/frpc/frpc.ini
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
EOF
[root@c-2 frpc]# systemctl daemon-reload && systemctl enable --now frpc  # 配置fprc开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/frpc.service to /etc/systemd/system/frpc.service.
[root@c-2 frpc]# systemctl status frpc
● frpc.service - frpc
   Loaded: loaded (/etc/systemd/system/frpc.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2023-04-22 23:55:02 CST; 7s ago  # active代表服务已经起来了
 Main PID: 2597 (frpc)
    Tasks: 6
   CGroup: /system.slice/frpc.service
           └─2597 /opt/frpc/frpc -c /opt/frpc/frpc.ini
Apr 22 23:55:02 c5 systemd[1]: Started frpc.
Apr 22 23:55:02 c5 frpc[2597]: 2023/04/22 23:55:02 [I] [service.go:299] [9fd0677df9f333fd]... [0]
Apr 22 23:55:02 c5 frpc[2597]: 2023/04/22 23:55:02 [I] [proxy_manager.go:142] [9fd0677df9f..._c5]
Apr 22 23:55:02 c5 frpc[2597]: 2023/04/22 23:55:02 [I] [control.go:172] [9fd0677df9f333fd]...cess  复制成功,转载请保留本站链接: www.chenjiao.cloud

注:

在systemd的Service文件中,Restart=可以有以下几种值可选:
no:表示不自动重启服务。
on-success:表示只有在服务正常退出(退出状态码为0)时才会自动重启服务。
on-failure:表示只有在服务异常退出(退出状态码非0)时才会自动重启服务。
on-abnormal:表示只有在服务因信号而异常退出时才会自动重启服务。
on-abort:表示只有在服务因收到SIGABRT信号而退出时才会自动重启服务。
on-watchdog:表示只有在服务因超时未响应而退出时才会自动重启服务。
always:表示无论服务退出状态码为何,都会自动重启服务。
如果想要在服务异常退出时自动重启服务,可以设置Restart=on-failure,这里是直接设置了Restart=always  复制成功,转载请保留本站链接: www.chenjiao.cloud


检查成功与否

登录frps的web管理界面,管理界面配置在frps.ini中有声明

image-gdxp.png

目录
相关文章
|
1月前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
178 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
1月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
850 12
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
26天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
30 2
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
147 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
1月前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
43 3
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
1月前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
68 1
|
2月前
|
Web App开发 前端开发 测试技术
【Docker项目实战】使用docker部署tabler后台模版
【10月更文挑战第10天】使用docker部署tabler后台模版
55 1
【Docker项目实战】使用docker部署tabler后台模版
|
2月前
|
JSON JavaScript 测试技术
【Docker项目实战】使用Docker部署PPTist在线演示文稿应用
【10月更文挑战第9天】使用Docker部署PPTist在线演示文稿应用
53 1
【Docker项目实战】使用Docker部署PPTist在线演示文稿应用

热门文章

最新文章