Docker deploy frpc 原本是想用openwrt上运行两个frpc,但是luci的app只能运行一个。于是谋生了使用docker来部署一个frpc的想法。方便管理。
准备 1 2 3 4 5 前置准备: 机器部署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.
1 2 3 4 5 6 7 8 9 #一起复制执行 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解析:
1 2 3 4 5 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
构建完成的镜像:
1 2 3 4 5 6 7 8 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
运行 运行镜像:
1 docker run --name frpc --net=host --restart=always -v /data/frp:/mnt/frp -d frpc
1 2 3 4 5 --name: 指定容器名字 --net: 容器使用宿主机网络 --restrat: 重启策略,always是总是重启 -v: 目录挂载,是把宿主机的/data/frp目录,挂载到容器的/mnt/frp目录。 -d: 指定使用的镜像,刚打镜像出来的frpc
其他命令: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 查看日志: docker logs frpc # 重启容器 docker restart frpc # 停止容器 docker stop frpc # 删除容器 docker rm frpc # 查看所有运行容器: docker ps # 查看所有运行容器(包括非运行状态) docker ps -a