🖥️ 一键将单台服务器利用docker虚拟成多个独立 Linux 环境 | Turn one server into multiple isolated Linux environments
核心价值:把一台物理服务器变成多台独立的虚拟服务器
- 🏠 多用户服务器托管:为不同用户分配独立的 Linux 环境和 SSH 访问端口
- 🔧 开发测试环境隔离:同时运行多个项目,避免依赖冲突
- 🌐 VPS 服务提供:快速创建多个出口节点或服务实例
- 📊 资源精细化管理:按需分配 CPU、内存、磁盘和网络带宽
# 你有一台云服务器,想给3个用户各自分配独立环境
用户A: ssh root@your-server -p 10001 # 独立的 Ubuntu 环境
用户B: ssh root@your-server -p 10002 # 独立的 Debian 环境
用户C: ssh root@your-server -p 10003 # 独立的 Alpine 环境- 智能资源评估:自动计算服务器可承载的容器数量
- 多 OS 支持:Ubuntu/Debian/Alpine/AlmaLinux 共享基础镜像
- 自动化安装:从零到可用,只需运行一个脚本
- CPU/内存限制:为每个容器分配固定资源配额
- 独立存储空间:每容器独立的 ext4 loopback 卷
- 网络带宽控制:主机级 tc 限速,上传/下载分控
- 月度流量配额:超额自动限速,支持重置和恢复
- 动态端口映射:
dport add 10001 container1即可开放访问 - Nginx Stream 代理:稳定的 TCP 四层转发
- 热更新配置:无需重启,实时生效
- 资源监控:CPU、内存、磁盘 I/O、网络速率
- 流量统计:累计传输量,断点续传统计
- 进程监控:容器内 Top 进程实时展示
- 在线换系统:无需重建容器,直接切换 OS
- 一键销毁:彻底清理容器及相关资源
- 密码管理:自动生成并可随时修改
- Linux 服务器(支持 Docker)
- Root 权限
- 至少 2GB 内存,10GB 可用磁盘
# 1. 下载脚本
wget https://github.com/XD06/multi-docker_container-server/raw/main/dse最终版.sh
# 2. 赋权并运行
chmod +x dse最终版.sh
sudo ./dse最终版.sh- 依赖检查:自动检测并提示安装 Docker、Compose 等
- 资源规划:评估服务器资源,推荐容器配额
- 容器配置:选择操作系统、数量、网络限制
- 自动部署:构建镜像、创建容器、配置网络
# 查看系统状态
dport status
# 为容器开放 SSH 端口
dport add 10001 dport-os-1 # 10001 -> 容器1:22
dport add 10002 dport-os-2 # 10002 -> 容器2:22
# 用户现在可以通过 SSH 连接
ssh root@your-server -p 10001
# 进入容器管理
dport shell dport-os-1 # 直接进入容器
dport monitor dport-os-1 # 实时监控资源# 创建3个不同OS的开发环境
sudo ./dse最终版.sh
# 选择:3个容器,分别为 Ubuntu/Debian/Alpine
# 分配端口
dport add 2201 dport-os-1 # Ubuntu 环境
dport add 2202 dport-os-2 # Debian 环境
dport add 2203 dport-os-3 # Alpine 环境
# 开发者连接
ssh root@server -p 2201 # Python 开发环境
ssh root@server -p 2202 # Node.js 开发环境
ssh root@server -p 2203 # Go 开发环境# 在管理界面为容器设置带宽限制
# 容器1: 下载 5MB/s, 上传 1MB/s
# 容器2: 下载 10MB/s, 上传 2MB/s
# 设置月度流量配额
# 容器1: 100GB/月
# 容器2: 500GB/月,超额后限速至 1MB/s# 快速为不同项目创建隔离环境
dport add 3001 test-env-1 # 项目A测试环境
dport add 3002 test-env-2 # 项目B测试环境
# 在线切换操作系统进行兼容性测试
# 管理界面 -> 选择容器 -> 更换操作系统 -> 选择 AlmaLinux┌─────────────────────────────────────────────┐
│ 宿主机 (Host) │
├─────────────────────────────────────────────┤
│ Nginx Stream Proxy (端口转发) │
│ ├─ :10001 → Container1:22 │
│ ├─ :10002 → Container2:22 │
│ └─ :10003 → Container3:22 │
├─────────────────────────────────────────────┤
│ Linux TC 带宽控制 (veth + ifb + htb) │
│ ├─ Container1: DL 5MB/s, UL 1MB/s │
│ ├─ Container2: DL 10MB/s, UL 2MB/s │
│ └─ Container3: 无限制 │
├─────────────────────────────────────────────┤
│ 容器层 (Docker Containers) │
│ ├─ dport-os-1 (Ubuntu) │
│ │ └─ 独立存储: /var/lib/dport-volumes/1 │
│ ├─ dport-os-2 (Debian) │
│ │ └─ 独立存储: /var/lib/dport-volumes/2 │
│ └─ dport-os-3 (Alpine) │
│ └─ 独立存储: /var/lib/dport-volumes/3 │
└─────────────────────────────────────────────┘
| 配置项 | 默认值 | 说明 |
|---|---|---|
| CPU 配额 | 智能推荐 | 每容器 CPU 核心数 |
| 内存配额 | 智能推荐 | 每容器内存 (MB) |
| 磁盘配额 | 智能推荐 | 每容器存储空间 (MB) |
| 下载限速 | 无限制 | 容器下载带宽 (KB/s) |
| 上传限速 | 无限制 | 容器上传带宽 (KB/s) |
# 全局配额设置文件: /opt/dport-system/quota/quota_config.json
{
"global_settings": {
"quota_enabled": true, # 是否启用配额控制
"quota_limit_speed": 1024, # 超额限速 (KB/s)
"reset_day": 1 # 每月重置日期
},
"containers": {
"dport-os-1": {
"quota_mb": 102400, # 100GB 月配额
"enabled": true
}
}
}dport monitor dport-os-1显示内容:
- 📈 CPU 使用率和负载
- 💾 内存使用量和配额
- 💿 磁盘空间和 I/O
- 🌐 网络速率和累计流量
- 📊 配额使用进度条
- 🔝 Top 进程列表
# 容器生命周期
dport shell <容器名> # 进入容器
dport monitor <容器名> # 监控容器
dport list # 列出所有映射
dport status # 系统状态
# 端口管理
dport add <端口> <容器> [目标端口] # 添加映射
dport remove <端口> # 移除映射
# 系统管理
./dse最终版.sh # 进入控制台
# 选择:管理现有系统 -> 全局操作- ✅ 容器隔离:每个容器运行在独立的网络命名空间
- ✅ 资源限制:CPU、内存、磁盘严格按配额分配
- ✅ 网络控制:主机级带宽限制,防止滥用
⚠️ Root 访问:容器内默认为 root 权限,请注意安全- 🔐 密码管理:自动生成强密码,支持随时修改
Q: 容器无法通过 SSH 连接?
# 检查端口映射
dport list
# 检查防火墙
sudo ufw allow <端口>/tcp # Ubuntu
sudo firewall-cmd --add-port=<端口>/tcp --permanent && sudo firewall-cmd --reload # CentOSQ: 带宽限制不生效?
# 检查 tc 规则
tc qdisc show
# 重新应用限制
# 进入管理界面 -> 选择容器 -> 网络带宽控制Q: 容器磁盘空间不足?
# 检查容器磁盘使用
dport shell <容器名>
df -h /root
# 可以在管理界面销毁并重建容器,调整磁盘配额欢迎提交 Issue 和 Pull Request!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
- Docker 社区
- Nginx 项目
- Linux Traffic Control 文档
⭐ 如果这个项目对您有帮助,请给我们一个 Star!