欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Amazon Elastic Container Service (Amazon ECS) 简介

程序员文章站 2022-07-10 10:40:04
...

Amazon Elastic Container Service (Amazon ECS)

Docker 是一种软件平台,可让您快速地建立、测试和部署应用程序,它将软件封装到容器 (Container) 的标准化单位,其中包含链接库、系统工具、程序代码和运行时间等执行软件所需的所有项目,用户可以将应用程序快速地部署到各种环境并加以扩展,而且知道程序代码可以执行。从下图可以看出,Container 比 VM 来的更轻量,更节省资源。

Amazon Elastic Container Service (Amazon ECS) 简介
图 01. Container 与 VM 的差别

建立 Amazon EC2

关于如何安装 EC2 可以参考 Amazon Elastic Compute Cloud (EC2) 笔记

进入 EC2 控制台,注意是否是 1. 在新加坡地区(必须要跟先前规划的 VPC 所在区域相同), 2. 按下左手边的实例后, 3. 在按下右手边的 Launch Instance

Amazon Elastic Container Service (Amazon ECS) 简介
图 02. 启动 Amazon EC2 实例

启动 Amazon EC2 实例需要有七个步骤,分别是:

  1. Choose AMI: 可以在不同的市集中选择适合的操作系统、适用的 CPU 架构(X86/arm)、适合的套件等等,要注意的是有些 AMI 是要收费的,还有 AMI 会跟接下来的 Instance Type与 Storage 有相关性,因为有些AMI需要较高的性能才有办法执行。预设选 Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-0b1e534a4ff9019e0 (64-bit x86)

Amazon Elastic Container Service (Amazon ECS) 简介
图 03. AMI 选择画面

  1. Choose Instance Type: 这跟计算能力有关,所以也反映到收费上,要求的计算能力越高,收费越高。预设选 t2.micro

  2. Configure Instance: 主要就是设定 EC2 实例的内容,有很多细部设定,就不一一说明,主要就是把这个实例放到公有子网 ithome public subnet 1 中,以下是需要修改的部分,其它的字段就保持默认值即可,如下图。

Network : vpc-0bb7004b67556d0da | ithomeVPC
Subnet : subnet-0f1df807467b642f6 | ithome public subnet 1 | ap-southeast-1a
Auto-assign Public IP : Enable

Amazon Elastic Container Service (Amazon ECS) 简介
图 04. EC2实例组态设定

  1. Add Storage: 这相当于选择硬盘大小,因为是安装 Amazon Linux ,所需空间不大,保持默认值即可。 8

  2. Add Tags: 可加可不加,通常是用在Cloud watch观察比较方便,我们先不加。

  3. Configure Security Group: 为提供安全保障,限制进来的联机,因为我们是建置 Web 服务器,所以打开埠号 22 与 80。

Assign a security group: Create a new security group
Security group name: ithome_web_SG
Description: ITHOME Web server Security Group
Type: SSH, HTTP
Source: Anywhere, Anywhere

Amazon Elastic Container Service (Amazon ECS) 简介
图 05. EC2安全组设定

  1. Review: 看一下前述的所有设定,确定无误后就直接按下 Launch

  2. Key pair 设定: 因为安全考虑,AWS要求使用者务必要用**对( key pair )的方式来进行联机,因此在启动 EC2 前会要求建立或选择**对,下载下来的**对钥一定要好好保存,遗失后是没办法再重新下载的。

Create a new key pair
Key pair name: ithome

Amazon Elastic Container Service (Amazon ECS) 简介
图 06. EC2 key pair 下载

联机到 Amazon EC2 (Windows)

请参考 AWS 的参考手册使用 PuTTY 从 Windows 联机至您的 Linux 实例,完成下列两件事:

  1. 下载并安装 PuTTY。
  2. 将刚下载的 EC2 key pair - ithome.pem 档案转换为 Putty 程序读取的可以 .ppk 档案

回到 EC2 控制台 选择实例,就可以看到刚刚启动的 Amazon EC2,找到 IPv4 Public IP 这个字段,作为 Putty 联机之用,从图九我们可以再次确认这个 EC 2所在的 VPC, Subnet, IPv4 Public IP, Availability zone, Security groups等信息是否正确。

Amazon Elastic Container Service (Amazon ECS) 简介
图 07. EC2 实例内容

有 putty 远程联机软件、Amazon EC2、公有 IP 、以及**,接着要完成的就是进行从本地端登入到云端的 Amazon EC2,打开Putty,输入以下数据:

Host Name( or IP address): aaa@qq.com (前面是登入账号,@后面是公有IP)
Saved Sessions: ithome

Amazon Elastic Container Service (Amazon ECS) 简介
图 08. PuTTy 组态设定

接着选择 Connection -> SSH -> Auth 选项,输入联机设定

Private key file for Authentication: 请选择刚刚转换好的 .ppk 檔

Amazon Elastic Container Service (Amazon ECS) 简介
图 09. PuTTy 安全联机设定

设定完毕后再选 Session 选项,记得先按 Save 存盘,再按 Open 去进行联机,联机成功后会显示 PuTTy 的联机警告,按下 Yes 后就可以顺利联机。

Amazon Elastic Container Service (Amazon ECS) 简介
图 10. PuTTy 联机警告

Amazon EC2 上安装 Docker

在 Amazon EC2 实例上安装 Docker

# 更新已安装的套装服务
sudo yum update -y
# 安装最新的 Docker Community Edition
sudo amazon-linux-extras install -y docker
# 启动 Docker 服务
sudo service docker start
# 设定 Docker 服务会自动启动
sudo systemctl enable docker
# 将 ec2-user 新增至 docker 群组,让您可以在不使用 sudo 的情况下执行 Docker 命令。
sudo usermod -a -G docker ec2-user
# Log out and log back in again
login ec2-user
# 验证 ec2-user 可以执行 Docker 命令
docker info

如果上述指令操作无误的话应该会出现以下画面

Amazon Elastic Container Service (Amazon ECS) 简介
图 11. Docker 安装且启动成功

建立 Docker 影像

透过 PuTTy 编辑 Dockerfile ,也可以在 Windows 编辑完后,透过 FileZilla 上传到 EC2,内容如下,特别要注意的是 wget 这一行,务必要完成 S3 对象的上传,而得到对象 URL

FROM amazonlinux:2

# 安装相关套件
RUN yum install -y \
    wget \
    httpd \
    php \
 && ln -s /usr/sbin/httpd /usr/sbin/apache2

# Install app
RUN rm -rf /var/www/html/* && mkdir -p /var/www/html
# 昨天放在 S3 上的档案,务必要修改正确
RUN wget https://bucket-name.s3-ap-southeast-1.amazonaws.com/index.php
ADD index.php /var/www/html

# Configure apache
RUN chown -R apache:apache /var/www
ENV APACHE_RUN_USER apache
ENV APACHE_RUN_GROUP apache
ENV APACHE_LOG_DIR /var/log/apache2

EXPOSE 80
CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

接下来透过 PuTTy 在 EC2 命令行中输入以下指令

# 从 Dockerfile 建置 Docker 影像,务必跟 Dockerfile 在相同目录下
docker build -t ithome-container .
# 执行 docker images,验证映像已正确建立。
docker images --filter reference=ithome-container
# 检查服务器的网页服务器是否开启
sudo service httpd status
# 关闭服务器的网页服务器
sudo service httpd stop
# 执行新建置的映像,第 1 个 80 是容器的埠号,第 2 个 80 是主机的端口号
docker run -t -i -p 80:80 ithome-container

Amazon Elastic Container Service (Amazon ECS) 简介
图 12. Docker 图像文件建置并启动

开启浏览器,然后指向执行 Docker 并托管容器的服务器,应该会看到这个网页内容

Amazon Elastic Container Service (Amazon ECS) 简介
图 13. Container内的网页

References

  • 什么是 Docker?, https://aws.amazon.com/tw/docker/
  • Docker basics for Amazon ECS, https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html
  • Amazon Elastic Container Service, https://aws.amazon.com/tw/ecs/?nc1=h_ls
  • Amazon ECS PHP Simple Demo, https://github.com/aws-samples/ecs-demo-php-simple-app
  • 用30天来介绍和使用 Docker 系列, https://ithelp.ithome.com.tw/users/20103456/ironman/1320
  • 30天铁人赛介绍 AWS 云端世界 - 28: AWS 上的容器服务 Elastic Container Service(ECS), https://ithelp.ithome.com.tw/articles/10195572
    列, https://ithelp.ithome.com.tw/users/20103456/ironman/1320
  • 30天铁人赛介绍 AWS 云端世界 - 28: AWS 上的容器服务 Elastic Container Service(ECS), https://ithelp.ithome.com.tw/articles/10195572