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 步的两个命令合在一起的,后来发现,容器运行一会儿就自动退出了,查看日志也是提示安装成功了,并没有其他什么报错。后来了解到容器运行就退出的几个原因:
- docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出
- 容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出
- 这个是 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
相关文章:
docker 运行花生壳实现内外网穿透
环境:centos 7 ,64位 1、创建一个指定的文件夹作为安装示例所用,该示例文件夹为“hsk-nwct”。“hsk-nwct”内创建“app”文件夹作为docker容器挂载出来的文件。 2、在“app”内下载花生壳linux安装包,下载花生壳应用:花生壳客户…...
操作系统——16.时间片轮转、优先级、多级反馈队列算法
这篇文章我们来看一下进程调度算法中的时间片轮转、优先级、多级反馈队列算法 目录 1.概述 2.时间片轮转调度算法(RR,Round-Robin) 3.优先级调度算法 4.多级反馈队列调度算法 5.分析对比 1.概述 首先,我们来看一下这篇文章…...
Python3.8.8-Django3.2-Redis-连接池-数据类型-字符串-list-hashmap-命令行操作
文章目录1.认识Redis1.1.优点1.2.缺点2.在Django中Redis的连接3.Redis的基础用法3.1.hashmap结构3.2.list结构4.命令行查看数据库5.作者答疑1.认识Redis Remote DIctionary Server(Redis) 是一个key-value 存储系统,是跨平台的非关系型数据库。是一个开源的使用 AN…...
Android kotlin 系列讲解(进阶篇)高级项目架构模式 - MVVM
<<返回总目录 1、MVVM是什么 MVVM是Model-View-ViewModel的缩写,是一种高级项目架构模式。 MVVM架构可以将程序结构主要分成三个部分: Model:数据模型部分,包括从服务端获取的json数据或者从本地获取的数据等等View&…...
8. 查找
1 题目描述 查找成绩10开启时间2021年09月24日 星期五 18:00折扣0.8折扣时间2021年11月15日 星期一 00:00允许迟交否关闭时间2021年11月23日 星期二 00:00 输入 n(n ≤ 10^6)个不超过 10^9的单调不减的(就是后面的数字不小于前面的数字)非负整数 &#…...
二分查找算法
感谢“五点七边”工作室的算法讲解,详细内容可以参考视频讲解 二分查找为什么总是写错?_哔哩哔哩_bilibili 此处仅是个人学习总结 以target等于5为例,输入: 1 2 3 5 5 5 8 9 1. 找到第一个 > target 的元素 判断条件 < target&am…...
Git(3)之远程服务器
Git基础之远程服务器 Author:onceday date:2023年3月5日 满满长路有人对你微笑过嘛… windows安装可参考文章:git简易配置_onceday_CSDN博客 參考文档: 《progit2.pdf》,Progit2 Github。《git-book.pdf》 文章目…...
Javalin解构
Javalin Javalin是一个轻量级http框架,我们可以很容易的了解请求的处理过程及其设计,具有较高的学习意义。 从demo说起 public static void main(String[] args) {Javalin app Javalin.create(config -> {System.out.println("用户配置"…...
yolov5算法,训练模型,模型检测
嘟嘟嘟嘟!工作需要,所以学习了下yolov5算法。是干什么的呢? 通俗来说,可以将它看做是一个小孩儿,通过成年人(开发人员)提供的大量图片的学习,让自己知道我看到的哪些场景需要提醒给成…...
linux系统防火墙开放端口
linux系统防火墙开放端口 在外部访问CentOS中部署应用时,需要通过防火墙管理软件,开端口,或者直接关闭防火墙进行解决(不建议) 加粗样式 常用命令: systemctl start firewalld #启动 systemctl stop firewalld #停止 systemctl status firewalld #查看…...
CSAPP第九章 虚拟内存
理解虚拟内存的原因 本章前部分描述虚拟内存是如何工作的,后一部分描述应用程序如何使用和管理虚拟内存 物理和虚拟寻址 虚拟内存作为缓存的工具 页表 页命中 缺页 虚拟内存作为内存管理的工具 简化链接,简化加载,简化共享,简化…...
numpy数组与矩阵运算(二)
文章目录矩阵生成与常用操作矩阵生成矩阵转置查看矩阵特性矩阵乘法计算相关系数矩阵计算方差、协方差、标准差计算特征值与特征向量计算逆矩阵求解线性方程组奇异值分解函数向量化矩阵生成与常用操作 矩阵生成 扩展库numpy中提供的matrix()函数可以用来把列表、元组、range对…...
Dubbo 中 Zookeeper 注册中心原理分析
Dubbo 中 Zookeeper 注册中心原理分析 文章目录Dubbo 中 Zookeeper 注册中心原理分析一、ZooKeeper注册中心1.1 ZooKeeper数据结构1.2 ZooKeeper的Watcher机制1.3 ZooKeeper会话机制1.4 使用ZooKeeper作为注册中心二、源码分析2.1 AbstractRegistry2.2 FailbackRegistry2.2.1 核…...
素数产生新的算法(由筛法减法改为增加法)--哥德巴赫猜想的第一次实际应用
素数产生新的算法(由筛法减法改为增加法)--哥德巴赫猜想的第一次实际应用 摘要:长期以来,人们认为哥德巴赫猜想没有什么实际应用的。 现在,我假设这个不是猜想,而是定理或公理,就产生了新的应用…...
递归-需要满足三个条件
一,概述 递归是一种应用非常广泛的算法(或者编程技巧)。很多数据结构和算法的编码实现都要用到递归,比如 DFS 深度优先搜索、前中后序二叉树遍历等。 去的过程叫“递”,回来的过程叫“归”。基本上所有的递归问题都可…...
【剑指Offer-Java】两个栈实现队列
题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 输入: [“CQueue”,“appendT…...
Allegro如何将Waived掉的DRC显示或隐藏操作指导
Allegro如何将Waived掉的DRC显示或隐藏操作指导 在用Allegro做PCB设计的时候,如果遇到正常的DRC,可以用Waive的命令将DRC不显示,如下图 当DRC被Waive掉的时候,如何将DRC再次显示出来。类似下图效果 具体操作如下 点击Display...
MATLAB——数据及其运算
MATLAB数值数据数值数据类型的分类1.整型整型数据是不带小数的数,有带符号整数和无符号整数之分。表中列出了各种整型数据的取值范围和对应的转换函数。2.浮点型浮点型数据有单精度(single)和双精度((double)之分&…...
【微信小程序】-- 页面导航 -- 声明式导航(二十二)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...
gdb查看汇编代码的例子
gdb查看汇编代码的例子 操作步骤 用 gdb 启动可执行文件:gdb executable_file在 gdb 中设置断点:break function_name 或者 break *memory_address运行程序:run当程序停止在断点处时,使用 disassemble 命令来查看汇编代码&#…...
安防弱电智能化VISIO图例实战指南:从入门到精通的设计技巧
1. VISIO在安防弱电设计中的核心价值 第一次接触安防弱电智能化设计时,我被各种复杂的系统连接关系搞得头晕眼花。直到发现VISIO这个神器,才真正体会到什么叫"一图胜千言"。不同于普通CAD软件,VISIO最大的优势在于它专为系统图设计…...
深度解析:利用pmap+gdb精准诊断Linux进程内存异常
1. 为什么需要pmapgdb组合排查内存问题 第一次遇到线上服务内存爆涨时,我盯着top命令里那个不断攀升的RES数值束手无策。传统的内存监控工具就像医院的体温计,只能告诉你"发烧了",但查不出具体病因。这就是pmap和gdb这对"黄金…...
2023年最新YOLO模型对比:YOLOv7 vs YOLOX vs YOLOv5,哪个更适合你的项目?
2023年YOLO模型实战选型指南:从原理到落地的深度对比 在计算机视觉领域,目标检测一直是核心任务之一,而YOLO(You Only Look Once)系列作为其中的佼佼者,凭借其出色的实时性能赢得了广泛关注。2023年,随着YOLOv7的发布&…...
Claude Code教程(四)| Codex 配置(插件安装)
Claude Code教程(四)| Codex 配置(插件安装)一、核心定位(一句话看懂)二、前置准备(必做)2.1 核心环境要求(极简)2.2 关键说明(重要)三…...
Mac 安装 Java JDK 完整教程:一篇文章讲透安装、配置、多版本管理
一、Java JDK 详解1.1 什么是 JDK?JDK(Java Development Kit,Java 开发工具包)是 Oracle 公司提供的用于 Java 程序开发的完整软件包。它是 Java 开发者不可或缺的核心工具,包含了编写、编译、调试和运行 Java 程序所需…...
告别电量焦虑:用Python+卡尔曼滤波手把手教你DIY一个高精度电池SOC估算器
告别电量焦虑:用Python卡尔曼滤波手把手教你DIY一个高精度电池SOC估算器 每次看到手机电量从20%突然跳到5%,或是电动工具在关键时刻罢工,你是否好奇工程师如何准确预测电池剩余容量?今天我们将用Python和卡尔曼滤波算法࿰…...
关于2026年6月14日PMI认证考试的报名通知
尊敬的各位考生: 经PMI和中国国际人才交流基金会研究决定,中国大陆地区2026年第二期PMI认证考试6月14日举办。在基金会网站报名参加本次PMI认证考试的考生须认真阅读下文,知悉考试安排及注意事项,并遵守考试有关规定。 一、 报名注…...
基于多维特征与随机森林的就业状态预测模型构建与优化实践
1. 就业预测模型的应用场景与价值 就业状态预测听起来高大上,但说白了就是帮我们判断一个人接下来会不会失业,或者帮失业的人找到合适工作。我在金融行业做数据分析时,就遇到过银行需要评估贷款申请人还款能力的情况——其实核心就是预测对方…...
Marked.js 终极指南:为什么这是现代 Web 开发中最快的 Markdown 解析器?
Marked.js 终极指南:为什么这是现代 Web 开发中最快的 Markdown 解析器? 【免费下载链接】marked A markdown parser and compiler. Built for speed. 项目地址: https://gitcode.com/gh_mirrors/ma/marked 在当今内容驱动的 Web 开发世界中&…...
Retinexformer Unleashed: A Deep Dive into Transformer-Based Low-Light Image Enhancement
1. Retinexformer:当Transformer遇见低光图像增强 深夜拍的照片总是又暗又糊?Retinexformer可能是目前最聪明的AI解决方案。这个将Transformer架构与Retinex理论结合的创新模型,在ICCV 2023上以6dB的性能优势碾压传统方法。我实测过它的增强效…...
