V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
imlk
V2EX  ›  Docker

「runnet」🔀 一个脚本快速创建隔离网络环境,解决端口冲突问题

  •  
  •   imlk ·
    KB5201314 · 2020-07-30 19:24:28 +08:00 · 1786 次点击
    这是一个创建于 1581 天前的主题,其中的信息可能已经有所发展或是发生改变。

    🔀 runnet

    这是一个工具脚本,用来快速创建隔离的网络环境,可以完成端口映射,避免监听端口冲突等功能。

    背景

    上学期期末时间数个后端大作业的 ddl 同时疯狂逼近,又由于俺习惯于从旧的 project 里面 copy 代码,也导致很多 project 端口号都是 8080 。结果导致在服务器上同时部署多个 project 时炸锅了,端口冲突是常事。但是以俺的性格,俺既不想重新打包 project,也不想产生改配置文件这样的无关紧要的 git commit 。遂想到之前学习的 namespace,于是乎,写了一个脚本来实现该想法,并发布到 github 上:

    https://github.com/KB5201314/runnet

    (不要脸地求 star )

    这个脚本完成了 network namespace 的创建、forward 、端口映射一连串的步骤,我想对于在学习 namespace 的人来说,这也会是一个入手的好例子。

    Warning

    该脚本会操作 iptables,不保证在您的环境中不会出现问题,因此请不要在生产环境偷懒使用该工具,以免造成损失

    Q&A

    1. 这个和 docker 有啥关系
      docker 也能完成端口映射,实际上命令参数的形式就是参考了 docker 。docker 不仅实现了 network 的隔离,还实现了其它层次的隔离,但是在我的需求中,只需要隔离 network 。

    2. 只能用来避免端口冲突吗?
      有一个参数可以控制是否允许联网(是否转发容器内流量到外部),如果开启则该应用相当于断网运行。如果还有其它的点子,欢迎提 pr 。鲁迅曾经说过:more features, more code.

    3. 你不会写个 DockerFile 嘛?
      docker 确实可以,但是俺是真的懒 XD

    1 条回复    2020-08-03 11:20:25 +08:00
    julyclyde
        1
    julyclyde  
       2020-08-03 11:20:24 +08:00
    yet another
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3429 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:41 · PVG 08:41 · LAX 16:41 · JFK 19:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.