使用 docker 运行 frp 服务端,并且上传到 docker hub 在线仓库

简介: 前言 最近在使用 frp 内网穿透服务,运行了一段时间,发现 frp 挺稳定的,突发奇想,之前学习了一下 docker 的使用,何不把 frp 打包成 docker 镜像,这样在任意服务器上就能快速开启 frp 服务了,于是折腾了一下午总算是搞定了。

前言

最近在使用 frp 内网穿透服务,运行了一段时间,发现 frp 挺稳定的,突发奇想,之前学习了一下 docker 的使用,何不把 frp 打包成 docker 镜像,这样在任意服务器上就能快速开启 frp 服务了,于是折腾了一下午总算是搞定了。

如果不想自己配置,可以使用 docker run -p 7000:7000 xiaoi/frp_for_docker:0.27.0 命令直接运行已经打包好的镜像。若要修改配置,覆盖镜像中的 /app/frps.ini 配置文件即可。

操作步骤

下载和配置 frp

首先我们需要下载一个 frp 服务端程序,可以在 github.com 上下载到最新发布的版本,这里下载 frp_0.27.0_linux_386.tar.gz 版本作为演示。

下载好了之后解压得到相关的应用程序和配置文件,我们只需要保留 frps 和 frps.ini 即可。若有需要可以在 frps.ini 进行自定义配置。
image

Dockerfile 编写

接下来我们编写 Dockerfile 文件,由于 frp 使用 golang 开发,发布的版本可以直接在 alpine 环境下运行,于是我们的工作变得非常简单,按照如下的代码编写即可

FROM alpine:latest

WORKDIR /app

COPY . /app

EXPOSE 7000

CMD ["./start.sh"]

由于我在 frps.ini 中配置的 7000 端口,这里 EXPOSE 也设置 7000 端口保持一致。

CMD 这里填写 "./start.sh"方便启动,start.sh 内容如下

#!/bin/sh
./frps -c ./frps.ini

docker 命令打包镜像

编写好 Dockerfile 和启动脚本之后,我们就可以使用 docker 命令打包了

docker build --tag=frp_for_docker .

打包好了之后使用 docker image ls 查看打包好的镜像
image

运行和检查镜像

使用 docker run -p 7000:7000 frp_for_docker 运行我们打包好的镜像,出现 success 等字样信息表明运行成功
image

上传镜像至在线仓库

如果想要在任意地方都能运行我们打包好的镜像,则需要上传镜像至 hub.docker.com 在线仓库,上传之前需要 注册 docker 账号

注册好了之后回到控制台运行 docker login 然后输入账号密码登录

然后将我们的镜像改名,格式为 用户名/镜像名:版本号 ,例如我的用户名为 xiaoi,镜像名我定义为 frp_for_docker ,版本号我这里按照 frp 版本号来定义,其中除了用户名不能自定义,镜像名和版本号都是可以任意命名,使用如下命令将本地镜像改名。

docker tag frp_by_docker xiaoi/frp_by_docker:0.27.0

改好之后使用 docker push 命令上传至在线仓库

docker push xiaoi/frp_for_docker:0.27.0

上传完成之后我们就可以在 hub.docker.com 在线仓库中查看我们的镜像了
image

在别处直接运行在线仓库中的镜像

在有 docker 环境的服务器或者个人电脑上使用 docker run 命令就可以运行在线仓库中的镜像,例如运行我们上传的镜像

docker run -p 7000:7000 xiaoi/frp_for_docker:0.27.0

运行命令之后,接下来的这一切都是自动化完成的,无需我们再做任何操作
image

总结

  • 使用 docker 我们可以很容易的将一个应用程序分发到各个地方运行,便于后期的维护和管理,同时也不用担心跨平台的问题产生;
  • 程序所依赖的环境我们也可以通过编写 Dockerfile 来解决,不必再为各个环境依赖重复安装运行环境,这样极大的减轻来工作量;
  • docker 能运行的程序远不于此,我们可以将所熟悉的一切软件都使用 docker 来运行和管理;

版权

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

原创作者 10086@xiaoi.me 发表于阿里云·云栖社区:https://yq.aliyun.com/users/y4epujtm5wye6

转载请保留原文链接以及版权信息

相关文章
|
27天前
|
安全 Docker 容器
|
10天前
|
存储 Ubuntu 数据安全/隐私保护
|
1月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
288 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
21天前
|
安全 Linux Shell
docker运行centos提示Operation not permitted
通过上述步骤,可以有效排查和解决在Docker中运行CentOS容器时遇到的"Operation not permitted"错误。这些措施涵盖了从权限配置、安全策略到容器运行参数的各个方面,确保在不同环境和使用场景下都能顺利运行容器。如果你需要进一步优化和管理你的Docker环境
35 3
|
1月前
|
Shell Docker 容器
LangChain-10(2) 加餐 编写Agent获取本地Docker运行情况 无技术含量只是思路
LangChain-10(2) 加餐 编写Agent获取本地Docker运行情况 无技术含量只是思路
18 4
LangChain-10(2) 加餐 编写Agent获取本地Docker运行情况 无技术含量只是思路
|
1月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
237 3
|
1月前
|
安全 Docker 容器
Docker中运行容器时Operation not permitted报错问题解决
【10月更文挑战第2天】Docker中运行容器时Operation not permitted报错问题解决
308 3
|
1月前
|
前端开发 应用服务中间件 nginx
docker运行nginx镜像
这篇文章详细说明了如何在Docker中部署并运行Nginx服务,包括拉取镜像、配置文件的挂载以及容器的启动配置。
236 0
docker运行nginx镜像
|
2月前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
143 15
Docker自建仓库之Harbor高可用部署实战篇
|
2月前
|
存储 Kubernetes Cloud Native
部署Kubernetes客户端和Docker私有仓库的步骤
这个指南涵盖了部署Kubernetes客户端和配置Docker私有仓库的基本步骤,是基于最新的实践和工具。根据具体的需求和环境,还可能需要额外的配置和调整。
87 1