Docker deploy frpc
原本是想用openwrt上运行两个frpc,但是luci的app只能运行一个。于是谋生了使用docker来部署一个frpc的想法。方便管理。
准备
前置准备:
机器部署docker
创建目录:/data/frp/
准备frpc.ini文件,并放在/data/frp/目录下
在修改/data/frp/frpc.ini后,需要重启镜像,重新加载配置文件。连接状态使用docker logs查看
执行,完毕
docker pull snowdreamtech/frpc
docker run --restart=always --network host -d -v /data/frp/frpc.ini:/etc/frp/frpc.ini --name frpc_new snowdreamtech/frpc
走弯路
构建docker镜像
需要部署docker。新建一个目录tmp
,并在目录下新建Dockerfile
.
mkdir tmp
cd tmp
#一起复制执行
cat << EOF >Dockerfile
FROM golang:1.19
WORKDIR /frpc
RUN apt-get update && apt-get install -y unzip
RUN wget https://github.com/fatedier/frp/archive/refs/tags/v0.46.0.zip && unzip v0.46.0.zip && cd frp-0.46.0/ && make build && cp bin/* /frpc
ENTRYPOINT ["./frpc", "-c", "/mnt/frp/frpc.ini"]
EOF
Dockerfile解析:
FROM golang:1.19 #基础镜像是golang:1.19
WORKDIR /frpc #指定工作目录
RUN apt-get update && apt-get install -y unzip #运行命令:安装unzip
RUN wget https://github.com/fatedier/frp/archive/refs/tags/v0.46.0.zip && unzip v0.46.0.zip && cd frp-0.46.0/ && make build && cp bin/* /frpc # 运行命令:wget下载frpc安装包,然后解压,然后make build构建二进制运行文件,然后把构建出来的frpc复制到工作目录
ENTRYPOINT ["./frpc", "-c", "/mnt/frp/frpc.ini"] #指定容器启动的时候执行的命令:./frpc -c /mnt/frp/frpc.ini
构建docker镜像:
docker -t是tag,是构建docker镜像的标签。注意最后有一个点,代表的是读取当前目录下的Dockerfile
docker build -t frpc .
构建完成的镜像:
docker images
[root@OpenWrt:10:24 AM /data/tmp] # docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
frpc latest 7b04ef70a9b2 16 hours ago 1.36GB
golang 1.19 ee6a422e97e0 2 days ago 993MB
运行
运行镜像:
docker run --name frpc --net=host --restart=always -v /data/frp:/mnt/frp -d frpc
--name: 指定容器名字
--net: 容器使用宿主机网络
--restrat: 重启策略,always是总是重启
-v: 目录挂载,是把宿主机的/data/frp目录,挂载到容器的/mnt/frp目录。
-d: 指定使用的镜像,刚打镜像出来的frpc
其他命令:
#查看日志:
docker logs frpc
#重启容器
docker restart frpc
#停止容器
docker stop frpc
#删除容器
docker rm frpc
#查看所有运行容器:
docker ps
#查看所有运行容器(包括非运行状态)
docker ps -a