在阿里云ECS实例中部署多个Docker应用,可以通过以下步骤实现。这种方法适用于希望在同一台ECS服务器上运行多个独立的Docker容器(如Web服务、数据库、缓存等)的场景。
✅ 一、准备工作
-
购买并配置ECS实例
- 选择合适的地域、实例规格(如2核4G以上推荐)、操作系统(建议使用 CentOS 7+/Ubuntu 20.04+)。
- 开放必要的安全组端口(如
80,443,22等)。
-
远程登录ECS
ssh root@<ECS公网IP>
✅ 二、安装 Docker 和 Docker Compose
1. 安装 Docker
# 更新包索引
sudo apt update # Ubuntu/Debian
# 或
sudo yum update # CentOS/RHEL
# 安装依赖
sudo apt install docker.io docker-compose -y # Ubuntu/Debian
# 或
sudo yum install docker docker-compose -y # CentOS
或者使用官方脚本安装最新版:
curl -fsSL https://get.docker.com | bash sudo systemctl start docker sudo systemctl enable docker
2. 验证安装
docker --version
docker-compose --version
3. 将当前用户加入 docker 组(可选)
sudo usermod -aG docker $USER
# 重新登录或执行 newgrp docker
newgrp docker
✅ 三、部署多个Docker应用
你可以通过以下两种方式部署多个应用:
方式一:使用 docker run 命令(适合简单应用)
示例:部署 Nginx + MySQL + Redis
# 1. 启动 Nginx(前端或反向X_X)
docker run -d --name nginx -p 80:80 -v /usr/share/nginx/html:/usr/share/nginx/html nginx
# 2. 启动 MySQL
docker run -d --name mysql -p 3306:3306
-e MYSQL_ROOT_PASSWORD=yourpassword
-v /data/mysql:/var/lib/mysql
mysql:8.0
# 3. 启动 Redis
docker run -d --name redis -p 6379:6379
-v /data/redis:/data
redis:alpine redis-server --appendonly yes
每个容器使用不同的
-p映射端口,避免冲突。
方式二:使用 docker-compose.yml(推荐,管理更清晰)
创建项目目录和 docker-compose.yml 文件:
mkdir ~/myapps && cd ~/myapps
vim docker-compose.yml
示例 docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
restart: unless-stopped
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: mysecretpassword
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
restart: unless-stopped
cache:
image: redis:alpine
ports:
- "6379:6379"
volumes:
- cache_data:/data
command: redis-server --appendonly yes
restart: unless-stopped
volumes:
db_data:
cache_data:
启动所有服务:
docker-compose up -d
查看状态:
docker-compose ps
停止:
docker-compose down
✅ 四、高级建议
-
使用 Nginx 反向X_X多个Web应用
- 如果你有多个Web服务(如 Node.js、Python Flask),可以统一用 Nginx 做反向X_X,监听 80/443,通过域名分发请求。
-
配置 HTTPS(使用 Let’s Encrypt)
- 使用
certbot+nginx自动生成 SSL 证书。
- 使用
-
数据持久化
- 所有重要数据(MySQL、Redis)使用
-v挂载到 ECS 的磁盘或云盘。
- 所有重要数据(MySQL、Redis)使用
-
监控与日志
docker logs <container_name> docker stats -
使用阿里云镜像提速器(提升拉取速度)
登录 阿里云容器镜像服务 获取提速地址,配置 Docker daemon:{ "registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"] }放入
/etc/docker/daemon.json,然后重启 Docker。
✅ 五、安全建议
- 关闭不必要的端口(仅开放 80, 443, 22)。
- 定期更新系统和Docker镜像。
- 不要将敏感信息硬编码在
docker-compose.yml中,使用.env文件或 Secrets。 - 考虑使用阿里云的 容器服务 ACK 或 ECI 实现更高可用性。
总结
| 方法 | 适用场景 |
|---|---|
docker run |
快速测试、简单应用 |
docker-compose |
多服务协作、生产级部署 |
| Kubernetes (ACK) | 大规模、高可用微服务 |
✅ 推荐在ECS上使用 Docker Compose 来管理多个Docker应用,简洁高效。
如有具体应用(如部署 WordPress + Redis),可进一步提供模板。
云小栈