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

如何在本地使用 docker 模拟出多个机房|机器,并且自定义机房直接的延迟,宽带?

  •  
  •   skyqqcc581 · 266 天前 · 1154 次点击
    这是一个创建于 266 天前的主题,其中的信息可能已经有所发展或是发生改变。

    已经与 chatgpt 进行了深入的沟通!它给的方案是 Containernet

    勉强能满足需求,但是这个似乎有个问题 我自己做了一个容器

    # 使用官方 Ubuntu 基础镜像
    FROM ubuntu:latest
    
    # 安装 SSH 服务
    RUN apt-get update && apt-get install -y openssh-server \
        iproute2 \
        net-tools \
        iputils-ping \
        traceroute \
        nano \
        vim \
        curl \
        wget \
        tar \
        gzip \
        unzip \
        htop \
        procps \
        lsof \
        openssl \
        git
    RUN mkdir /var/run/sshd
    
    # 允许 root 账户通过密码登录
    RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    
    # 复制启动脚本到容器中
    COPY start.sh /start.sh
    RUN chmod +x /start.sh
    RUN echo "root:root" | chpasswd
    # 开放 22 端口
    EXPOSE 22
    # 启动 SSH 服务
    CMD ["/usr/sbin/sshd", "-D"]
    

    手动运行时没问题 但是在 python 中启动时 CMD ["/usr/sbin/sshd", "-D"] 这一行命令就像是没有被执行一样。。。SSH 没能自动启动

    还有没有什么更好的方案?例如有没有什么 K8s 的面板

    能搞管理容器 交换机 并且设置交换机之前的延迟 宽带啥的,。。?

    并且更新容器可能比较麻烦,无法动态添加删除

    9 条回复    2024-03-03 12:17:42 +08:00
    klo424
        1
    klo424  
       266 天前
    可以先手动把系统环境做好,再进行 docker save 打包,或者直接传到 docker hub 上,再模拟分发不同的机房或机器。
    A01514035
        2
    A01514035  
       266 天前
    docker 我不知道,但是对于模拟自定义机房直接的延迟,宽带,在网络仿真领域有个 ns3 模拟器,你可以了解一下。
    skyqqcc581
        3
    skyqqcc581  
    OP
       266 天前
    @A01514035 我要在模拟的机器上执行程序 而不仅仅只是需要一个拓扑
    skyqqcc581
        4
    skyqqcc581  
    OP
       266 天前
    @klo424 我不想现在买真的物理机
    Elroooo0Y
        5
    Elroooo0Y  
       266 天前
    有个 tc 工具, 可以模拟网络延迟

    https://commandnotfound.cn/linux/1/620/tc-%E5%91%BD%E4%BB%A4
    mayooot
        6
    mayooot  
       266 天前
    CMD ["/usr/sbin/sshd", "-D"] 去掉-D 试试呢
    julyclyde
        7
    julyclyde  
       265 天前
    @mayooot 那肯定是不能去掉的
    julyclyde
        8
    julyclyde  
       265 天前
    我觉得你应该先把计算机基础、linux 基础学一下
    再尝试用 docker

    如果目标是学习网络,就用专业的网络设备模拟器,别在自己做工具这件事上浪费时间
    skyqqcc581
        9
    skyqqcc581  
    OP
       265 天前
    @julyclyde 这个问题解决了 Containernet 文档写了 它会替换 CMD 然后 需要手动执行

    但是剩下的是 路由这块的问题 没搞定。已经放弃了 不模拟延迟和带宽了 直接在程序内 fakedata
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2776 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:10 · PVG 18:10 · LAX 02:10 · JFK 05:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.