Rancher Desktop采坑记录(二)

       简述

        接上一篇Rancher Desktop采坑记录(一)

        项目需要,需要在Windows系统上部署一些轻量级的服务,但部署虚拟机比较繁琐,因此否定了这个方案。经过一番调研,计划在Window系统上使用Docker。

      Rancher desktop安装部署后,docker运行良好,安装部署不再叙述,可以使用docker run命令部署容器也可使用docker-compose编排多个容器。

        问题描述

        由于项目需要,需要在容器内映射几个udp和tcp的端口到宿主机,供外部应用访问。如何映射端口不再累述,通过docker命令的-p参数可以映射端口,具体可以自行搜索。但实际部署后,发现tcp端口工作正常,但udp端口却无法正常访问。

        解决方案

        经过一通百度,也没有找到可行的解决方案,不得已,只能自行使用工具进行端口转发。

   

        Windows的docker功能实现是通过windows自带的wsl linux子系统实现的,如上图所示。在powershell中,可通过输入wsl命令进入linux子系统,在linux子系统中,测试映射的各端口,均是正常的。因此端口映射的问题,应该是出在了windows到wsl子系统之间。

        通过命令ifconfig查看wsl子系统的ip地址,然后在windows系统的cmd中ping,两者是互通的。因此我们可以将wsl子系统看做一个单独的虚拟机,通过goproxy进行udp端口的转发。(原理相同,也可通过别的代理工具)

proxy.exe udp -p 20000 -T udp -P XXX:0  //其中XXX代表的是wsl子系统的ip地址

        经过测试,业务功能均正常。至此已经可以实现udp端口的转发。

        另外有几个需要注意的问题。

        1、proxy如果要映射udp端口一个范围,例如20000-20010,官方给出的示例是可以通过“20000-20010”这种方式转发的,但是实际测试时,发现端口不通,单个端口均正常,由于映射的端口不多,因此也没有细究原因。

        2、wsl子系统的ip,每次开启都是随机变化的,网上也有一些固定wsl ip地址的方法,但操作比较麻烦,没有尝试。我们写了个脚本每次开机通过“wsl sh /root/getip.sh>tmp.dat ”命令的方法自行获取,获取完成后再做proxy的端口映射命令。

//getip.sh内容
ifconfig eth0 | egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" | head -n 1 

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值