在阿里云服务器上同时管理多个 Docker 容器,核心思路是:安装并配置 Docker + 使用容器编排工具或管理界面。以下是分步指南,涵盖从基础到进阶的实用方案:
✅ 一、基础准备(所有方案通用)
-
登录阿里云 ECS 实例
- 通过 SSH 连接服务器(如
ssh root@your-server-ip)
- 通过 SSH 连接服务器(如
-
安装 Docker Engine
# CentOS/RHEL sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker && sudo systemctl enable docker # Ubuntu/Debian curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER # 非 root 用户需执行 newgrp docker # 立即生效组权限 -
验证安装
docker --version docker run hello-world
✅ 二、推荐方案对比与选择
| 方案 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Docker Compose | 多容器微服务(如 Web+DB+Cache) | 声明式配置、一键启停、网络隔离自动处理 | 单主机部署,无分布式调度能力 |
| Portainer(Web UI) | 可视化操作、团队协作、新手友好 | 图形化管理、支持多主机、项目模板丰富 | 需额外部署一个容器 |
| Kubernetes(k8s) | 生产级高可用、弹性伸缩、复杂集群 | 强大编排能力、云原生生态集成 | 学习曲线陡峭,资源开销大 |
| Systemd + Shell 脚本 | 极简场景、自定义启动逻辑 | 轻量、可控性强 | 缺乏统一视图,维护成本高 |
💡 建议:
- 中小项目 → Docker Compose + Portainer(平衡易用性与功能)
- 生产集群 → 阿里云 ACK(托管 Kubernetes) 或自建 k8s
✅ 三、实战方案详解
🔹 方案 A:Docker Compose(最常用)
- 创建
docker-compose.yml(例如webapp/目录):version: '3.8' services: web: image: nginx:alpine ports: - "80:80" volumes: - ./html:/usr/share/nginx/html db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: your_password volumes: - mysql_data:/var/lib/mysql
volumes:
mysql_data:
2. 启动所有容器:
```bash
cd /path/to/webapp
docker compose up -d # 新版语法;旧版用 docker-compose up -d
- 常用命令:
docker compose ps # 查看状态 docker compose logs -f # 实时日志 docker compose down # 停止并删除容器(保留卷) docker compose restart web # 重启单个服务
✅ 优势:配置文件版本化,可 Git 管理;一键部署完整应用栈。
🔹 方案 B:Portainer(Web 可视化平台)
-
启动 Portainer 容器:
docker volume create portainer_data docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest -
浏览器访问:
http://your-server-ip:9000- 首次设置管理员密码
- 点击 "Add Environment" → 默认本地 Docker 引擎已自动识别
-
功能亮点:
- 图形化创建/编辑容器、镜像、网络、卷
- 批量操作(启动/停止/删除)
- 日志查看、终端接入、健康检查监控
- 支持导入 Docker Compose 文件直接部署
🌐 提示:若需远程安全访问,建议搭配 Nginx 反向X_X + HTTPS,并启用 IP 白名单。
🔹 方案 C:阿里云 ACK(托管 Kubernetes)—— 生产级推荐
- 在 阿里云控制台 创建 ACK 集群(支持 Serverless 或 EKS 兼容模式)
-
使用
kubectl或阿里云 CLI 管理:# 安装 kubectl(示例) curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.28.0/bin/linux/amd64/kubectl chmod +x kubectl sudo mv kubectl /usr/local/bin/ # 获取集群配置 aliyun ack GetClusterConfig --cluster-id <cluster-id> export KUBECONFIG=./config - 编写 Deployment + Service YAML 部署多容器应用:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: frontend image: nginx:1.25 ports: [{containerPort: 80}] - name: backend image: python:3.11-slim command: ["python", "-m", "http.server", "8000"] - 部署:
kubectl apply -f deployment.yaml kubectl get pods -w
✅ 优势:自动扩缩容、滚动更新、故障自愈、与阿里云 SLB/ACK Ingress 深度集成。
🔒 四、安全与运维最佳实践
- 防火墙策略:仅开放必要端口(如 80/443),Docker 内部通信不暴露公网
- 镜像安全:定期扫描镜像漏洞(
docker scan或 Trivy) - 日志集中:对接阿里云 SLS(日志服务)实现统一采集分析
- 备份策略:关键数据卷定期快照(结合 OSS 或 NAS)
- 资源限制:为容器设置 CPU/Memory 上限防止资源争抢:
deploy: resources: limits: cpus: '0.5' memory: 512M
需要我根据你的具体场景(如:搭建 LAMP 环境、微服务架构、CI/CD 流水线等)提供定制化配置示例吗?欢迎补充需求 😊
云小栈