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

264 天前
 skyqqcc581

已经与 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 的面板

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

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

1150 次点击
所在节点    站长
9 条回复
klo424
264 天前
可以先手动把系统环境做好,再进行 docker save 打包,或者直接传到 docker hub 上,再模拟分发不同的机房或机器。
A01514035
264 天前
docker 我不知道,但是对于模拟自定义机房直接的延迟,宽带,在网络仿真领域有个 ns3 模拟器,你可以了解一下。
skyqqcc581
264 天前
@A01514035 我要在模拟的机器上执行程序 而不仅仅只是需要一个拓扑
skyqqcc581
264 天前
@klo424 我不想现在买真的物理机
Elroooo0Y
264 天前
有个 tc 工具, 可以模拟网络延迟

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

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

但是剩下的是 路由这块的问题 没搞定。已经放弃了 不模拟延迟和带宽了 直接在程序内 fakedata

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1019977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX