美文网首页
通过ssh打洞实现容器内代码在线调试

通过ssh打洞实现容器内代码在线调试

作者: Katou_Megumi | 来源:发表于2020-10-23 16:38 被阅读0次

原理

事情起因是因为公司项目代码是python,部署是docker swarm方式,在服务器上运行的是一个个的docker容器。
如果常规调试的话,就得每修改一次代码就要重新打包镜像然后启动容器运行,极其的麻烦,所以我们这里需要一个在线远程调试的功能,要能实现本地修改代码无需重新打包和启动容器就能生效。很容易想到的就是sftp的方式,修改代码上传到服务器,不过这里因为是容器运行,就需要端口打洞,且因为部署机器无法直连,要通过跳板机做一个跳转。
原理是在部署代码,打包镜像的时候打包进去一个sshd,然后将容器内部的22端口(ssh端口)暴露出来映射到服务器上的一个端口。然后我们通过一个ssh打洞通过跳板机的转发打洞到本地自己机器的一个端口,从而可以把本地的代码上传到容器内,容器内相当于运行的就是你本地的代码,本地有修改代码也可以通过ssh上传到服务器的docker容器内,原理和常用的sftp传代码的功能是一样的,只不过是因为隔了一层容器,所以要麻烦一点。

实现

ssh -f -p 58422 用户名@跳板机ip -L 12345:172.17.132.130:12345 -N

12345是容器暴露出给部署机器的端口,映射的是容器内的22端口,172是部署服务器ip,58422是跳板机端口,基本流程是
容器内22 ——> 部署机12345 ——> 通过跳板机58422跳转 ——> 到本地的12345端口
之后通过访问本地的127.0.0.1:12345就可以访问容器内了

Pycharm配套配置

pycharm进行一套配置可实现远程debug功能
Tools -> Deployment ->configuration

image.png
然后配置好python解释器为服务器上的解释器
image.png
注意配置项目路径path mapping,把本地的项目文件夹映射到服务器上对应的项目文件夹

相关文章

  • 通过ssh打洞实现容器内代码在线调试

    原理 事情起因是因为公司项目代码是python,部署是docker swarm方式,在服务器上运行的是一个个的do...

  • 让“干净”的docker后台运行!

    有时候用docker调试程序,想通过telnet或者ssh连接容器,但即便敲了“docker run -d”,若容...

  • 容器安全之容器中禁止运行SSH服务

    描述 SSH服务不应该在容器内运行 隐患分析 在容器内运行SSH可以增加安全管理的复杂性难以管理SSH服务器的访问...

  • 容器被无法获取java进程调试

    容器被无法获取java进程调试 今天尝试在容器内使用arthas调试,发现无法attch到java进程,jstac...

  • 反爬:网页反 debug 问题解决

    1. 网页反 debug 机制分析 反 debug 调试措施,是通过在代码中 添加 debugger 代码 实现,...

  • 深入理解Kubernetes Pod调试

    调试运行中的容器和Pod不像直接调试进程那么容易,本文介绍了通过临时容器共享命名空间的方式调试业务容器进程的方法。...

  • nsenter

    使用场景:当需要在容器中调试网络,而容器没有安装调试命令,可以通过docker inspect --format ...

  • ssh隧道打洞

    作为一名程序猿可能会碰到本地处理生产数据的问题,一般生产都会有从库可以进行进行查询操作,如果配有跳板机则是不能直接...

  • Flutter - Hot Reload

    flutter 通过 Hot Reload 可以实现代码的动态刷新,可以帮助开发者方便快速的调试代码,构建 UI,...

  • Java并发编程 - 深入剖析ReentrantLock之非公平

    这篇文章不是讲ReentrantLock的使用,而是通过调试,分析其实现原理。 非公平锁 测试代码如下: 代码测试...

网友评论

      本文标题:通过ssh打洞实现容器内代码在线调试

      本文链接:https://www.haomeiwen.com/subject/acuvmktx.html