阿里云ECS Docker容器化部署实战教程
2026/8/14 12:45:15 网站建设 项目流程

阿里云ECS Docker容器化部署实战教程

难度:中级 | 预计耗时:45 分钟 | 费用:约¥30

前言

本教程旨在指导中级开发者在阿里云 ECS 实例上完成 Docker 容器化部署全流程。通过实战演练,你将掌握从环境搭建、镜像构建到容器编排的核心技能。重点讲解如何利用 ECS 的高可用性与 Docker 的轻量级特性,实现应用快速迭代与弹性伸缩。学完后,你不仅能独立部署 Web 服务,还能理解容器化对运维效率的提升,为后续学习 Kubernetes 打下坚实基础。教程将结合具体配置参数,确保环境可复现,帮助你快速构建生产级容器化应用架构。

准备工作

  1. 拥有阿里云账号并完成实名认证。2. 准备一台 ECS 实例(推荐 2 核 4G,CentOS 7.9 或 Ubuntu 20.04)。3. 本地安装 SSH 客户端与 VS Code 远程插件。4. 安装 Docker CLI 与 Git 工具。5. 确保本地有可部署的示例代码仓库。注意:ECS 安全组需开放 22 端口,镜像仓库建议配置私有镜像加速。购买 ECS 时选择按量付费或短期包年以控制成本,避免资源浪费。

步骤总览

  1. 第一步:创建并连接阿里云 ECS 实例
  2. 第二步:安装 Docker Engine 环境
  3. 第三步:安装 Docker Compose 编排工具
  4. 第四步:准备应用代码与目录结构
  5. 第五步:编写 Dockerfile 镜像构建文件
  6. 第六步:构建 Docker 镜像
  7. 第七步:配置安全组与网络策略
  8. 第八步:运行容器并映射端口
  9. 第九步:配置持久化存储与数据卷
  10. 第十步:监控日志与资源清理

详细步骤

步骤 1:第一步:创建并连接阿里云 ECS 实例

登录阿里云控制台,进入 ECS 管理页面。选择“创建实例”,地域建议选择离用户最近的节点,如“华北 2(北京)”。实例规格选择通用型 g6 或计算型 c6,配置 2 核 4G 内存,系统盘选择 40GB ESSD。网络类型选择 VPC,安全组规则需放行 22 端口用于 SSH 连接。购买后,在“实例列表”点击连接,获取公网 IP 和默认用户名 root。使用终端命令 ssh root@<ECS_IP> 登录服务器,输入密码验证,确保网络连通性正常,这是后续部署的基础环境。

步骤 2:第二步:安装 Docker Engine 环境

登录服务器后,首先更新系统包管理器。执行命令 yum update -y 确保系统最新。接着安装 Docker 依赖包,使用 yum install -y docker-ce docker-ce-cli containerd.io。启动 Docker 服务并设置开机自启,命令为 systemctl start docker && systemctl enable docker。验证安装是否成功,输入 docker version 查看版本信息,确保服务端与客户端版本兼容。此时 Docker 守护进程已在后台运行,默认监听 TCP 2375 端口,但为了安全,建议后续配置 TLS 或使用 Unix Socket。

yum update-yyuminstall-ydocker-ce docker-ce-cli containerd.io systemctl startdocker&&systemctlenabledockerdockerversion

步骤 3:第三步:安装 Docker Compose 编排工具

为了简化多容器应用管理,需安装 Docker Compose。推荐使用 pip 安装最新稳定版。首先安装 pip3,命令为 yum install -y python3-pip。然后使用 pip3 install docker-compose 进行安装。安装完成后,验证版本输入 docker-compose --version。若网络受限,可配置国内镜像源加速。Docker Compose 允许通过 YAML 文件定义多容器服务,支持一键启动、停止和重建,极大提升开发效率,是容器化部署的标准工具之一。

yuminstall-ypython3-pip pip3installdocker-composedocker-compose--version

步骤 4:第四步:准备应用代码与目录结构

在本地或服务器创建项目目录,例如 mkdir -p /app/my-webapp && cd /app/my-webapp。将示例代码上传至服务器,可使用 git clone 或 scp 命令。目录结构应包含 src 目录存放源代码,Dockerfile 存放构建指令,docker-compose.yml 定义服务配置。确保代码中包含 package.json 或 requirements.txt 等依赖文件。合理的目录结构有助于维护,避免生产环境配置混乱。若代码在本地,使用 scp -r /local/path root@<ECS_IP>:/app/my-webapp 传输。

mkdir-p/app/my-webappcd/app/my-webapp# 假设已上传代码gitclone https://github.com/example/demo.git.

步骤 5:第五步:编写 Dockerfile 镜像构建文件

在项目中创建 Dockerfile。基于官方基础镜像,如 FROM python:3.9-slim。设置工作目录 WORKDIR /app。复制依赖文件 COPY requirements.txt . 并安装依赖 RUN pip install -r requirements.txt。复制源代码 COPY . . 设置启动命令 CMD python app.py。注意使用多阶段构建可减小镜像体积,例如先构建再运行。Dockerfile 中的指令顺序应优化缓存,将变动小的指令放在前面。构建完成后,镜像大小应控制在合理范围,建议不超过 500MB 以保证拉取速度。

FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "app.py"]

步骤 6:第六步:构建 Docker 镜像

在 Dockerfile 所在目录下执行构建命令。使用 docker build -t my-webapp:latest . 指定镜像名称和标签。构建过程会读取 Dockerfile 并逐层执行指令,输出日志显示构建进度。构建完成后,使用 docker images 查看本地镜像列表,确认 my-webapp 已存在。若构建失败,检查 Dockerfile 语法或网络连通性。构建的镜像可推送到阿里云容器镜像服务(ACR)实现私有化存储,便于后续多实例部署与版本管理,增强安全性。

dockerbuild-tmy-webapp:latest.dockerimages

步骤 7:第七步:配置安全组与网络策略

在阿里云控制台,找到 ECS 实例所属的安全组,编辑入方向规则。新增一条规则,协议选择 TCP,端口范围 8080,授权对象为 0.0.0.0/0 允许公网访问。若使用 HTTPS,需额外开放 443 端口。确保 ECS 内部防火墙(如 firewalld)也放行相应端口,命令 firewall-cmd --add-port=8080/tcp --permanent。安全配置是防止未授权访问的关键,建议生产环境限制特定 IP 段,而非全网开放,结合阿里云云盾服务提升整体安全性,降低被攻击风险。

firewall-cmd --add-port=8080/tcp--permanentfirewall-cmd--reload

步骤 8:第八步:运行容器并映射端口

使用 docker run 命令启动容器。命令为 docker run -d -p 8080:8080 --name webapp my-webapp:latest。-d 表示后台运行,-p 映射宿主机 8080 端口到容器 8080 端口,–name 指定容器名称。启动后,使用 curl http://<ECS_IP>:8080 测试服务是否响应。若无法访问,检查安全组规则与容器端口映射是否一致。容器日志可通过 docker logs webapp 查看,排查启动错误。此时应用已可通过公网 IP 访问,实现了本地开发环境到云服务器的迁移。

dockerrun-d-p8080:8080--namewebapp my-webapp:latestcurlhttp://<ECS_IP>:8080

步骤 9:第九步:配置持久化存储与数据卷

容器重启后数据可能丢失,需挂载数据卷。使用 -v 参数将宿主机目录挂载到容器,如 -v /app/data:/app/data。在 docker-compose.yml 中定义 volumes 部分,指定卷名。对于数据库等状态服务,建议挂载到阿里云云盘,而非本地磁盘,以支持数据备份与迁移。配置云盘挂载命令 mount /dev/vdb /data,并设置自动挂载。数据持久化是生产环境的核心要求,确保业务数据不随容器销毁而丢失,同时利用云盘的高 IOPS 性能保障读写效率。

dockerrun-d-v/app/data:/app/data--namewebapp my-webapp:latest

步骤 10:第十步:监控日志与资源清理

部署完成后,建立监控机制。使用 docker stats 查看容器 CPU 与内存占用,设置阈值告警。定期清理无用镜像与容器,命令 docker system prune -a 释放空间,避免磁盘爆满影响服务。查看日志文件 docker logs --tail 100 webapp 定位问题。结合阿里云云监控服务,配置 CPU 使用率超过 80% 时报警。最后,测试容器重启行为,确保服务具备自愈能力。良好的运维习惯能延长 ECS 生命周期,保障业务连续性,降低故障恢复时间。

dockerstatsdockersystem prune-adockerlogs--tail100webapp

费用总结

部署成本主要取决于 ECS 实例规格与运行时长。按量付费每小时约¥0.5-1.0,包年包月更优惠,首年折扣可达 5 折。建议购买 3 个月以上实例享受折扣,或使用抢占式实例降低成本,价格可低至按量付费的 10%。避免长期闲置,及时释放未用资源。利用阿里云镜像加速服务可减少拉取时间,降低网络成本。定期清理无用镜像节省存储空间。若业务量波动大,可结合弹性伸缩组(Auto Scaling)动态调整实例数量,实现成本与性能的最佳平衡。整体单次部署成本可控制在¥30 以内。

相关链接

  • 云服务器 ECS 官方文档
  • 阿里云帮助中心

常见问题

这个教程适合新手吗?

本教程面向中级级别读者,按步骤操作即可完成,无需深厚的云上经验;遇到报错可对照上一步检查配置。

完成教程后如何进一步优化?

上线后可结合弹性伸缩、监控告警与规格升配,进一步优化云服务器 ECS的性价比与稳定性。

遇到报错怎么办?

如遇操作问题,优先查阅阿里云云服务器 ECS官方文档,或提交工单获取技术支持。

相关推荐

  • 前往阿里云官网了解 云服务器 ECS 的最新规格与价格

教程中涉及的产品价格以阿里云官网实时价格为准。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询