AWS ECS入门实:战用容器部署应用,不用管服务器
引言:容器是什么?为什么用ECS?
传统方式部署应用:买服务器、装系统、装环境、放代码。麻烦,而且环境不一致容易出问题。
容器技术把应用和依赖打包成一个“集装箱”,在任何地方都能运行。ECS是AWS的容器管理服务,帮你运行这些容器,不用管底层服务器。
一、理解容器和ECS
1.1 容器是什么?
想象一下:你要搬家,把所有东西(衣服、电器、日用品)都打包进一个箱子。到新家直接打开箱子就能用,不用重新买。容器就是这个箱子,把代码、运行环境、依赖都打包进去,到哪都能跑。
1.2 ECS是什么?
ECS是AWS的容器编排服务,帮你运行和管理容器。你可以告诉ECS:“我要跑5个容器”,ECS会帮你启动、监控、重启。
ECS有两种模式:
EC2模式:你自己管服务器,ECS把容器调度到你的服务器上
Fargate模式:不用管服务器,ECS直接运行容器,按资源用量收费
新手推荐Fargate模式,省心。
二、准备工作
2.1 准备一个简单的应用
假设你有一个Python Flask应用,代码很简单:
python
复制下载
# app.pyfrom flask import Flaskapp = Flask(__name__)@app.route('/')def hello(): return "Hello from ECS!"if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
2.2 写Dockerfile
Dockerfile是容器的“配方”,告诉系统怎么打包。
dockerfile
复制下载
# 使用Python基础镜像FROM python:3.9-slim# 设置工作目录WORKDIR /app# 复制依赖文件COPY requirements.txt .RUN pip install -r requirements.txt# 复制代码COPY app.py .# 暴露端口EXPOSE 5000# 启动命令CMD ["python", "app.py"]
requirements.txt里写:flask
三、打包镜像并推送到ECR
ECR是AWS的镜像仓库,存放你的容器镜像。
3.1 创建ECR仓库
在服务搜索框输入“ECR”,进入控制台
点击“创建存储库”
名称:my-flask-app
点击“创建”
3.2 登录ECR并推送镜像
在本地终端,执行ECR控制台给的命令:
bash
复制下载
# 登录aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com# 构建镜像docker build -t my-flask-app .# 打标签docker tag my-flask-app:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-flask-app:latest# 推送docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-flask-app:latest
镜像就存到AWS上了。
四、创建ECS集群并运行任务
4.1 创建集群
进入ECS控制台
点击“创建集群”
选择“仅网络”,用Fargate模式
集群名称:my-cluster
点击“创建”
4.2 定义任务定义
任务定义就是告诉ECS:容器用什么镜像、要多少CPU内存、开放哪些端口。
在ECS左侧点击“任务定义”,然后“创建新任务定义”
任务定义族:my-flask-task
启动类型:AWS Fargate
任务角色:选ecsTaskExecutionRole(需要提前创建,或者用默认的)
任务大小:CPU选0.25vCPU,内存选0.5GB
容器定义:点击“添加容器”
容器名称:flask-container
镜像:123456789012.dkr.ecr.us-east-1.amazonaws.com/my-flask-app:latest
端口映射:容器端口5000,协议TCP
点击“创建”
4.3 运行任务
在ECS左侧点击“集群”,选中my-cluster
点击“运行新任务”
启动类型选“Fargate”
任务定义选my-flask-task,版本选最新的
集群:my-cluster
网络:选择你的VPC和子网,自动分配公网IP
点击“运行”
几秒后,任务状态变成“运行中”。
五、访问你的应用
5.1 获取公网IP
在任务详情里,找到“网络”部分,可以看到公网IP。
5.2 访问
浏览器打开 http://你的公网IP:5000,看到“Hello from ECS!”,成功!
六、用负载均衡器暴露服务
6.1 创建负载均衡器
在EC2控制台,创建Application Load Balancer
面向互联网,选至少两个子网
安全组允许HTTP(80端口)
创建目标组,协议HTTP,端口5000
注册目标时先不注册
6.2 创建ECS服务
在ECS集群里,点击“创建服务”
启动类型:Fargate
任务定义:my-flask-task
服务名称:my-flask-service
期望任务数:2(跑两个副本)
负载均衡:选择“Application Load Balancer”,选你创建的,容器端口5000
点击“创建”
ECS会自动启动两个任务,并注册到负载均衡器。用负载均衡器的DNS名称访问,流量会分发给两个容器。
七、常见问题
问:Fargate和EC2模式怎么选?
答:Fargate不用管服务器,省心,但略贵。EC2模式便宜,但要自己管理服务器。新手先用Fargate,熟悉后再考虑EC2模式。
问:容器启动失败怎么办?
答:在ECS任务详情里,点“日志”标签,看错误日志。常见问题:端口写错、镜像不存在、内存不够。
问:怎么更新应用?
答:构建新镜像,推送到ECR,然后更新任务定义,再更新服务(选择“强制新部署”)。
八、结语
ECS让你用容器部署应用,不用管服务器。从写Dockerfile、推镜像、运行任务,到加负载均衡,一套流程下来,你就掌握了现代应用部署的基本方法。以后更新应用,只要改代码、构建新镜像、更新服务,几分钟就能上线。
如果需要更深入咨询了解可以联系全球代理上TG:jinniuge 他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。不懂找他们就对了。
