Skip to content

XD06/multi-docker_container-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi-Docker Container Server

🖥️ 一键将单台服务器利用docker虚拟成多个独立 Linux 环境 | Turn one server into multiple isolated Linux environments

GitHub stars GitHub license

🎯 项目用途 | What It Does

核心价值:把一台物理服务器变成多台独立的虚拟服务器

主要应用场景

  • 🏠 多用户服务器托管:为不同用户分配独立的 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 环境

✨ 核心特性 | Key Features

🚀 一键部署

  • 智能资源评估:自动计算服务器可承载的容器数量
  • 多 OS 支持:Ubuntu/Debian/Alpine/AlmaLinux 共享基础镜像
  • 自动化安装:从零到可用,只需运行一个脚本

🎛️ 精确资源控制

  • CPU/内存限制:为每个容器分配固定资源配额
  • 独立存储空间:每容器独立的 ext4 loopback 卷
  • 网络带宽控制:主机级 tc 限速,上传/下载分控
  • 月度流量配额:超额自动限速,支持重置和恢复

🌐 灵活端口管理

  • 动态端口映射dport add 10001 container1 即可开放访问
  • Nginx Stream 代理:稳定的 TCP 四层转发
  • 热更新配置:无需重启,实时生效

📊 实时监控

  • 资源监控:CPU、内存、磁盘 I/O、网络速率
  • 流量统计:累计传输量,断点续传统计
  • 进程监控:容器内 Top 进程实时展示

🔧 便捷管理

  • 在线换系统:无需重建容器,直接切换 OS
  • 一键销毁:彻底清理容器及相关资源
  • 密码管理:自动生成并可随时修改

🛠️ 快速开始 | Quick Start

系统要求

  • 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

首次运行流程

  1. 依赖检查:自动检测并提示安装 Docker、Compose 等
  2. 资源规划:评估服务器资源,推荐容器配额
  3. 容器配置:选择操作系统、数量、网络限制
  4. 自动部署:构建镜像、创建容器、配置网络

基本使用

# 查看系统状态
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      # 实时监控资源

📋 使用示例 | Usage Examples

场景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 开发环境

场景2:带宽限制的 VPS 服务

# 在管理界面为容器设置带宽限制
# 容器1: 下载 5MB/s, 上传 1MB/s
# 容器2: 下载 10MB/s, 上传 2MB/s

# 设置月度流量配额
# 容器1: 100GB/月
# 容器2: 500GB/月,超额后限速至 1MB/s

场景3:测试环境隔离

# 快速为不同项目创建隔离环境
dport add 3001 test-env-1   # 项目A测试环境
dport add 3002 test-env-2   # 项目B测试环境

# 在线切换操作系统进行兼容性测试
# 管理界面 -> 选择容器 -> 更换操作系统 -> 选择 AlmaLinux

🏗️ 技术架构 | Architecture

┌─────────────────────────────────────────────┐
│                宿主机 (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   │
└─────────────────────────────────────────────┘

🔧 高级配置 | Advanced Configuration

自定义资源配额

配置项 默认值 说明
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
    }
  }
}

📊 监控与管理 | Monitoring & Management

实时监控界面

dport monitor dport-os-1

显示内容:

  • 📈 CPU 使用率和负载
  • 💾 内存使用量和配额
  • 💿 磁盘空间和 I/O
  • 🌐 网络速率和累计流量
  • 📊 配额使用进度条
  • 🔝 Top 进程列表

管理操作

# 容器生命周期
dport shell <容器名>           # 进入容器
dport monitor <容器名>         # 监控容器
dport list                    # 列出所有映射
dport status                  # 系统状态

# 端口管理
dport add <端口> <容器> [目标端口]    # 添加映射
dport remove <端口>                 # 移除映射

# 系统管理
./dse最终版.sh                # 进入控制台
# 选择:管理现有系统 -> 全局操作

🔒 安全说明 | Security Notes

  • 容器隔离:每个容器运行在独立的网络命名空间
  • 资源限制:CPU、内存、磁盘严格按配额分配
  • 网络控制:主机级带宽限制,防止滥用
  • ⚠️ Root 访问:容器内默认为 root 权限,请注意安全
  • 🔐 密码管理:自动生成强密码,支持随时修改

🆘 故障排除 | Troubleshooting

常见问题

Q: 容器无法通过 SSH 连接?

# 检查端口映射
dport list
# 检查防火墙
sudo ufw allow <端口>/tcp  # Ubuntu
sudo firewall-cmd --add-port=<端口>/tcp --permanent && sudo firewall-cmd --reload  # CentOS

Q: 带宽限制不生效?

# 检查 tc 规则
tc qdisc show
# 重新应用限制
# 进入管理界面 -> 选择容器 -> 网络带宽控制

Q: 容器磁盘空间不足?

# 检查容器磁盘使用
dport shell <容器名>
df -h /root
# 可以在管理界面销毁并重建容器,调整磁盘配额

🤝 贡献 | Contributing

欢迎提交 Issue 和 Pull Request!

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证 | License

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

🙏 致谢 | Acknowledgments

  • Docker 社区
  • Nginx 项目
  • Linux Traffic Control 文档

如果这个项目对您有帮助,请给我们一个 Star!

About

一键将单台服务器利用docker虚拟成多个独立 Linux 环境 | Turn one server into multiple isolated Linux environments

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages