当前位置: 首页 > news >正文

docker 运行花生壳实现内外网穿透

环境:centos 7 ,64位

1、创建一个指定的文件夹作为安装示例所用,该示例文件夹为“hsk-nwct”。“hsk-nwct”内创建“app”文件夹作为docker容器挂载出来的文件。

2、在“app”内下载花生壳linux安装包,下载花生壳应用:花生壳客户端官方下载 - 贝锐花生壳官网

本服务下载的版本是“phddns_5.2.0_amd64.rpm”,然后创建容器内执行的安装命令文件“a.sh”。“a.sh”文件内容

#!/bin/sh
a="开始启动 docker phddns 花生壳服务"
echo $aecho "进入安装包所在文件夹"
cd app/echo "花生壳服务检测"if command -v phddns >/dev/null 2>&1;then echo "服务已安装"phddns statuselse echo "服务未安装,执行安装"rpm -ivh phddns_5.2.0_amd64.rpmecho "服务完成、设置开机启动"phddns  enablefi

        该命令是先检测容器内有没有安装过花生壳应用,没有则执行安装的流程。

3、退出“app”文件,在“hsk-nwct”内运行容器。执行如下命令:

docker run --privileged=true --restart=always   -e TZ="Asia/Shanghai" \
-d --net=host --name hskct2023 \
-v  /root/docker/hsk-nwct/app:/app \
dokken/centos-7:latest 

第一次运行,可以考虑将“ --restart=always”去掉,方便查看容器是否运行成功,使用如下命令:

docker logs  hskct2023

4、在运行的容器内安装花生壳,命令如下:

docker exec -it hskct2023 /bin/bash /app/a.sh

执行完后,可以看到如下

可以考虑在容器内继续执行 ”phddns status“ 查看是否启动成功。记住 ”sn“码,将它绑定到“设备列表”即可,管理端地址是:花生壳管理   。

 如图配置好了。

5、试错展示,最开始时是将第3、第4 步的两个命令合在一起的,后来发现,容器运行一会儿就自动退出了,查看日志也是提示安装成功了,并没有其他什么报错。后来了解到容器运行就退出的几个原因:

  1. docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出
  2. 容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出
  3. 这个是 docker 的机制问题

很明显, 第四步的执行“a.sh”的命令并不会一直挂着的,所以他会安装完花生壳应用就自己关闭退出了。试错命令如下:

docker run --privileged=true --restart=always -e TZ="Asia/Shanghai" \
-d --net=host --name hskct2023 \
-v  /root/docker/hsk-nwct/app:/app \
dokken/centos-7:latest /bin/bash /app/a.sh

6、每次都要输入命令,为图方便,我将需要执行的命令整合了一下。在“hsk-nwct”内创建“test.sh”文件,内编辑

#!/bin/sh
a="开始启动 docker hsk 花生壳内外网穿透 服务"
echo $adocker stop hskct2023
docker rm hskct2023docker run --privileged=true --restart=always   -e TZ="Asia/Shanghai" \
-d --net=host --name hskct2023 \
-v  /root/docker/hsk-nwct/app:/app \
dokken/centos-7:latest echo "容器启动成功,开始执行安装"docker exec -it hskct2023 /bin/bash /app/a.shexit
exit

运行成功的示例:

 7、其他命令,记录一下方便回顾:

删除花生壳的命令:yum remove phddns -y

http://www.lryc.cn/news/31077.html

相关文章:

  • 操作系统——16.时间片轮转、优先级、多级反馈队列算法
  • Python3.8.8-Django3.2-Redis-连接池-数据类型-字符串-list-hashmap-命令行操作
  • Android kotlin 系列讲解(进阶篇)高级项目架构模式 - MVVM
  • 8. 查找
  • 二分查找算法
  • Git(3)之远程服务器
  • Javalin解构
  • yolov5算法,训练模型,模型检测
  • linux系统防火墙开放端口
  • CSAPP第九章 虚拟内存
  • numpy数组与矩阵运算(二)
  • Dubbo 中 Zookeeper 注册中心原理分析
  • 素数产生新的算法(由筛法减法改为增加法)--哥德巴赫猜想的第一次实际应用
  • 递归-需要满足三个条件
  • 【剑指Offer-Java】两个栈实现队列
  • Allegro如何将Waived掉的DRC显示或隐藏操作指导
  • MATLAB——数据及其运算
  • 【微信小程序】-- 页面导航 -- 声明式导航(二十二)
  • gdb查看汇编代码的例子
  • 第四讲:如何将本地代码与服务器代码保持实时同步
  • cuda调试(一)vs2019-windows-Nsight system--nvtx使用,添加nvToolsExt.h文件
  • 向Spring容器中注入bean有哪几种方式?
  • 如何用 Python采集 <豆某yin片>并作词云图分析 ?
  • Python装饰器的具体实用示例
  • 谈谈我对Retrofit源码的理解
  • 八股文(三)
  • 2023最新实施工程师面试题
  • 安卓逆向_6 --- JNI 和 NDK
  • Pod控制器
  • 微服务到云原生