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

目录
相关文章
|
20天前
|
监控 文件存储 Docker
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
与电脑不同,NAS通常7x24小时运行,便于下载资源,解决BT/PT下载需长时间在线的问题。因此,qBittorrent、Transmission等下载管理工具成为NAS用户的必备应用。通过Docker,用户可在多种NAS设备上快速安装这些工具,并通过局域网IP地址+端口访问。然而,缺乏公网IPv4地址导致远程访问困难,贝锐花生壳提供了解决方案,允许无公网IP情况下通过固定域名远程访问NAS中的下载工具,简化了部署过程,使用户能随时随地控制家中的下载任务。
157 33
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
|
1月前
|
Kubernetes Java Docker
利用(K8S)配合Docker部署jar包
通过Docker打包并部署到Kubernetes(K8S)集群的过程。首先,通过SpringBoot生成jar包,接着在K8S环境中创建并编辑Dockerfile文件。随后构建Docker镜像,并将其推送到镜像仓库。最后,通过一系列kubectl命令(如get pods、get svc、logs等),展示了如何在K8S中管理应用,包括查看Pod状态、服务信息、Pod日志以及重启Pod等操作。
125 2
|
13天前
|
应用服务中间件 Docker 容器
docker应用部署---Tomcat的部署配置
这篇文章介绍了如何使用Docker部署Tomcat服务器,包括搜索和拉取Tomcat镜像、创建容器并设置端口映射和目录映射,以及如何创建一个HTML页面并使用外部机器访问Tomcat服务器。
docker应用部署---Tomcat的部署配置
|
13天前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
1月前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
70 15
Docker自建仓库之Harbor高可用部署实战篇
|
3天前
|
存储 Linux 开发者
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
虚拟机centos7.9一键部署docker
|
28天前
|
人工智能 API 数据库
FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
【9月更文挑战第5天】 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
|
14天前
|
前端开发 应用服务中间件 nginx
docker部署本地前端项目思路
docker部署本地前端项目思路
27 7
|
13天前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo