加油
努力

在阿里云ECS实例中如何部署多个Docker应用?

在阿里云ECS实例中部署多个Docker应用,可以通过以下步骤实现。这种方法适用于希望在同一台ECS服务器上运行多个独立的Docker容器(如Web服务、数据库、缓存等)的场景。


✅ 一、准备工作

  1. 购买并配置ECS实例

    • 选择合适的地域、实例规格(如2核4G以上推荐)、操作系统(建议使用 CentOS 7+/Ubuntu 20.04+)。
    • 开放必要的安全组端口(如 80, 443, 22 等)。
  2. 远程登录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

✅ 四、高级建议

  1. 使用 Nginx 反向X_X多个Web应用

    • 如果你有多个Web服务(如 Node.js、Python Flask),可以统一用 Nginx 做反向X_X,监听 80/443,通过域名分发请求。
  2. 配置 HTTPS(使用 Let’s Encrypt)

    • 使用 certbot + nginx 自动生成 SSL 证书。
  3. 数据持久化

    • 所有重要数据(MySQL、Redis)使用 -v 挂载到 ECS 的磁盘或云盘。
  4. 监控与日志

    docker logs <container_name>
    docker stats
  5. 使用阿里云镜像提速器(提升拉取速度)
    登录 阿里云容器镜像服务 获取提速地址,配置 Docker daemon:

    {
      "registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"]
    }

    放入 /etc/docker/daemon.json,然后重启 Docker。


✅ 五、安全建议

  • 关闭不必要的端口(仅开放 80, 443, 22)。
  • 定期更新系统和Docker镜像。
  • 不要将敏感信息硬编码在 docker-compose.yml 中,使用 .env 文件或 Secrets。
  • 考虑使用阿里云的 容器服务 ACKECI 实现更高可用性。

总结

方法 适用场景
docker run 快速测试、简单应用
docker-compose 多服务协作、生产级部署
Kubernetes (ACK) 大规模、高可用微服务

✅ 推荐在ECS上使用 Docker Compose 来管理多个Docker应用,简洁高效。

如有具体应用(如部署 WordPress + Redis),可进一步提供模板。

云服务器