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优惠、充值秒到账、官网下单享双重售后支持。不懂找他们就对了。