aws(学习笔记第十九课) 使用ECS和Fargate进行容器开发

news2024/12/24 6:37:54

aws(学习笔记第十九课)

  • 使用ECSFargate进行容器开发

学习内容:

  • 使用本地EC2中部署docker应用
  • 使用ECSEC2模式进行容器开发
  • 使用ECSFargate模式进行容器开发

1. 使用本地EC2中部署docker应用

  1. docker整体
    在这里插入图片描述
    这里展示了docker的整体流程。

    • 开发阶段
      • 编写dockerfile,定义整个docker应用。(1. build
      • build docker image的过程中会从git repository pull业务代码(2. pull business code
      • build之后的docker image pushdocker repository(3. push
      • ec2 instance上,pull docker image from docker repository,之后执行docker image
        docker的一个目的就是Build once,Run anywhere(搭建一次,到处能用)
  2. docker的概念

    • WHY CONTAINERS?
    Containers allow developers to iterate at high velocity and offer the speed to scale to meet the demands 
    of the application. It’s first important to understand what a container is, and how it enables teams to 
    move faster.
    • WHAT IS A CONTAINER?
    Containers provide a standard way to package your application’s code, configurations, and dependencies 
    into a single object.
    Containers share an operating system installed on the server and run as resource-isolated processes, 
    ensuring quick, reliable, and consistent deployments, regardless of environment.
    Whether you deploy locally on your laptop or to production, the experience will remain the same
    WHAT IS DOCKER?
    • Docker is a software platform that allows you to build, test, and deploy applications quickly.
    • Docker packages software into standardized units called containers that have everything the software 
    needs to run including libraries, system tools, code, and runtime.
    • Whether you are running on Linux, Windows, or macOS, you can run containers!
    
  3. 启动EC2,并启动docker应用

    • 启动一个EC2实例
      在这里插入图片描述
    • 进入EC2实例,安装和启动docker
      • ssh链接实例后,开始安装docker
        sudo -i
        yum install docker -y
        systemctl start docker
        systemctl enable docker
        docker info
        
      • 编写dockerfile文件
        FROM ubuntu:18.04
        
        # Install dependencies
        RUN apt-get update && \
         apt-get -y install apache2
        
        # Install apache and write hello world message
        RUN echo 'Hello World!' > /var/www/html/index.html
        
        # Configure apache
        RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
         echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
         echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ 
         echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
         chmod 755 /root/run_apache.sh
        
        EXPOSE 80
        CMD /root/run_apache.sh
        
      • 运行docker命令build
        sudo docker build -t hello-world .
        
        注意,这里需要sudo权限执行docker命令
      • 运行docker命令开始运行
        sudo docker run -i -t -p 80:80 hello-world
        
    • 访问EC2实例的80端口
      在这里插入图片描述

2. 使用ECSEC2模式进行容器开发

  1. ECS的整体概念
    在这里插入图片描述

    • 首先定义task
      这个是application的核心,它定义了这个应用程序的docker image,这里docker image不太合适,应该叫ECSjson定义,也就是ECStask的静态定义。
    • 其次定义一个cluster
      有了静态定义,还需要动态定义,即执行环境。这是task的执行环境定义。
    • 最后定义service
      这里就是一个粘合剂,把task(静态定义)和cluster(动态定义)进行结合起来。
  2. 进入ECS,首先进行任务定义(静态定义)

    • 使用json定义任务
      {
        "family": "yourApp-demo",
        "containerDefinitions": [
          {
            "volumesFrom": [],
            "portMappings": [
              {
                "hostPort": 80,
                "containerPort": 80
              }
            ],
            "command": null,
            "environment": [],
            "essential": true,
            "entryPoint": null,
            "links": [],
            "mountPoints": [
              {
                "containerPath": "/usr/local/apache2/htdocs",
                "sourceVolume": "my-vol",
                "readOnly": null
              }
            ],
            "memory": 300,
            "name": "simple-app",
            "cpu": 10,
            "image": "httpd:2.4"
          },
          {
            "volumesFrom": [
              {
                "readOnly": null,
                "sourceContainer": "simple-app"
              }
            ],
            "portMappings": [],
            "command": [
              "/bin/sh -c \"while true; do echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>' > top; /bin/date > date ; echo '</div></body></html>' > bottom; cat top date bottom > /usr/local/apache2/htdocs/index.html ; sleep 1; done\""
            ],
            "environment": [],
            "essential": false,
            "entryPoint": [
              "sh",
              "-c"
            ],
            "links": [],
            "mountPoints": [],
            "memory": 200,
            "name": "busybox",
            "cpu": 10,
            "image": "busybox"
          }
        ],
        "volumes": [
          {
            "host": {
              "sourcePath": null
            },
            "name": "my-vol"
          }
        ]
      }
      
    • 像如下一样,使用json定义一个ECStask
      在这里插入图片描述
    • 之后该task会被激活
      在这里插入图片描述
  3. 接着进行cluster定义
    在这里插入图片描述
    进行了各种设定之后,创建ECScluster,这个是用于执行task的执行环境
    但是,这里创建了之后,还是没有执行起来task,之后会创建taskclustser的粘合剂,即service

  4. 进行service的定义

    • 选择cluster之后,进入,并选择service进行创建。
      在这里插入图片描述
    • 按照执行的选项进行service的创建
      在这里插入图片描述
      负载均衡器这里不选择创建
  5. 访问service

    • 访问task,之后点击simple-app,确认网络绑定这里。
      在这里插入图片描述
    • 使用网络绑定的地址进行访问
      在这里插入图片描述
  6. 查看EC2

    • 查看EC2,确认该ECScluster创建的EC2实例。
      在这里插入图片描述
    • 强制删除这个EC2实例
      可以看到,强制删除了正在运行的唯一的EC2之后,过了一会,ECS会自动创建出另一个EC2
      在这里插入图片描述
      *继续访问task的网络配置,还是能够访问该服务
      但是由于没有使用ALB Application Load Balancer或者NLB Network Load Balancer,这里的IP地址变成其他的了。
      总结一下,EC2的模式下,ECS上启动的image之后,是能够看到EC2 instance的,接下来的Fargate就看不到了,接下来体验下Fargate
      在这里插入图片描述

3. 使用ECSFargate模式进行容器开发

  1. 使用Fargate进行开发
    • 创建一个fargate的集群
      注意,这里选择AWS Fargate类型,它和EC2的区别是EC2模式,能见到EC2 instance,但是Fargate模式下,看不到EC2
      在这里插入图片描述
    • 对任务task做出修改
      默认的任务不支持Fargate,到了创建服务service的时候会报错。
      在这里插入图片描述
    • 对任务task做出修改让其适应Fargate
      在这里插入图片描述
    • 访问Fargateservice在这里插入图片描述
    • 查看EC2
      可以看到没有创建EC2,这里Fargate的模式,是不能见到外在的EC2 instance的。 在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2264584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python 图片下载器】一款专门为爬虫制作的图片下载器,多线程下载,速度快,支持续传/图片缩放/图片压缩/图片转换

文章日期&#xff1a;2024.12.23 使用工具&#xff1a;Python 本章知识&#xff1a;制作一款图片下载器_DOS窗口&#xff08;爬虫专用&#xff09; 文章难度&#xff1a;低等&#xff08;没难度&#xff09; 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要…

关于博客系统的自动化功能测试报告

1.项目背景 基于 SSM 的个人博客系统测试 博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来存储相关的数据&#xff0c;前端主要有四个页面构成:登录页、列表页、详情页以及编辑页&#xff0c;模拟实现了个人博客列表页面&#xff0c;其结合后端实现了以下的…

计算机的错误计算(一百八十九)

摘要 用大模型计算 tan(12.345) . 自变量取弧度。结果保留10位有效数字。不同于前面两节的大模型&#xff0c;本节调用了新的两个大模型。然而&#xff0c;很遗憾&#xff0c;它们给出的答案似乎仍然是“匹配”出来的&#xff0c;不是计算出来的。当然&#xff0c;均是错误的。…

IP地址数据信息和爬虫拦截的关联

IP地址数据信息和爬虫拦截的关联主要涉及到两方面的内容&#xff0c;也就是数据信息和爬虫。IP 地址数据信息的内容丰富&#xff0c;包括所属地域、所属网络运营商、访问时间序列、访问频率等。 从IP地址信息中可以窥见多样的数据&#xff0c;那么我们应该怎么利用IP地址信息来…

springboot+logback学习文档

目录 1、前提说明2、引入依赖、将logback配置文件打到classes下2.1、引入依赖2.2、将logback配置文件打到classes下 3、使用说明3.1、配置文件名称和位置3.2、常规用法3.2.1、property标签&#xff08;普通变量&#xff09;3.2.2、springProperty标签&#xff08;spring变量&am…

Laya ios接入goole广告,开始接入 2

开始使用 | iOS | Google for Developers 谷歌广告的官网&#xff0c;需要搭梯子&#xff0c;API你说详细吧&#xff0c;也就那样&#xff0c;主要是没接过 一步步来吧 0.laya导包 前端出包原生 screenorientation 全部 portrait&#xff0c;我这个是竖屏的 注意这个&a…

详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用

目录 详解js柯里化原理及用法&#xff0c;探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用 一、什么是柯里化&#xff1f; 1、原理解析 2、一个直观的例子 二、如何实现柯里化&#xff1f; 1、底层实现 2、工作原理解析 3…

EDGE浏览器每次关闭时再次打开保存的密码就消失如何解决

文章目录 EDGE浏览器每次重启的时候保存的密码都消失如何解决&#xff1f; 打开EDGE浏览器点击三个点 点击设置 点击隐私、搜索和服务 找到选择每次关闭浏览器时要清除的内容 将开启的关闭即可

数据流图和流程图的区别

在结构化建模中&#xff0c;数据流图和流程图都是非常重要的工具&#xff0c;它们为开发人员提供了强大的手段来分析和设计系统。尽管两者在表面上看起来有些相似&#xff0c;但它们在功能、用途和表达方式上存在显著的区别。本文将详细探讨数据流图和流程图的区别&#xff0c;…

云计算中的容器技术(如Docker)是什么?

今天想和大家聊聊容器技术&#xff0c;特别是Docker这个大家可能经常听到的名词。记得我刚接触容器技术时也觉得挺抽象的&#xff0c;让我用简单的比喻来说明吧。 想象一下你在搬家。传统方式是把所有家具、电器分散装车&#xff0c;到了新家还要重新组装、调试。这就像我们以…

《Opencv》基础操作详解(2)

接上篇&#xff1a;《Opencv》基础操作详解&#xff08;1&#xff09;-CSDN博客 目录 Opencv基础操作 11、B、G、R颜色通道提取 12、显示单个通道颜色 13、 合并颜色通道 14、图像添加马赛克 15、图片区域替换 16、图片的缩放&#xff08;常用&#xff09; 17、图像运算…

STM32——“SPI Flash”

引入 在给单片机写程序的时候&#xff0c;有时会用到显示屏&#xff0c;就拿市面上的0.96寸单色显示器来说&#xff0c;一张全屏的图片就占用8x1281024个字节&#xff0c;即1kb的空间&#xff0c;这对于单片机来说确实有点奢侈&#xff0c;于是我买了一个8Mb的SPI Flash&#x…

深入浅出:AWT的基本组件及其应用

目录 前言 1. AWT简介 2. AWT基本组件 2.1 Button&#xff1a;按钮 2.2 Label&#xff1a;标签 ​编辑 2.3 TextField&#xff1a;文本框 2.4 Checkbox&#xff1a;复选框 2.5 Choice&#xff1a;下拉菜单 2.6 List&#xff1a;列表 综合案例 注意 3. AWT事件处理 …

Flutter组件————PageView

PageView 可以创建滑动页面效果的widget&#xff0c;它允许用户通过水平或垂直滑动手势在多个子页面&#xff08;child widgets&#xff09;之间切换。每个子页面通常占据屏幕的全部空间。 参数 参数名类型描述childrenList<Widget>包含在 PageView 中的所有子部件&am…

三种电子画册制作方法

今天教大家三种电子画册的制作方法&#xff0c;很容易上手&#xff0c;需要的赶紧收藏起来 一、 利用在线平台--FLBOOK 1.注册并登录在线平台。 2.选择喜欢的模板&#xff0c;根据需求进行修改 3.批量上传PDF文件一键转换H5翻页电子画册 4.添加图片、文字等元素&#xff0c…

以太坊账户详解

文章目录 一、账户基本概念1.1 外部账户1.2 合约账户1.3 差异对比 二、帐户创建2.1 外部账户创建2.2 合约账户创建 三、账户数据结构3.1 账户状态3.2 账户状态结构 对比比特币的 “UTXO” 余额模型&#xff0c;以太坊使用“账户”余额模型。 以太坊丰富了账户内容&#xff0c;除…

AWS Transfer 系列:简化文件传输与管理的云服务

在数字化转型的今天&#xff0c;企业对文件传输、存储和管理的需求日益增长。尤其是对于需要大量数据交换的行业&#xff0c;如何高效、可靠地传输数据成为了一大挑战。为了解决这一难题&#xff0c;AWS 提供了一系列的文件传输服务&#xff0c;统称为 AWS Transfer 系列。这些…

基础I/O -> 如何谈文件与文件系统?

文件的基础理解 空文件也要在磁盘上占据空间。文件 文件内容文件属性。文件操作 对内容的操作 对属性的操作或者是对内容和属性的操作。标定一个文件&#xff0c;必须使用&#xff1a;文件路径 文件名&#xff08;具有唯一性&#xff09;。如果没有指明对应的文件路径&…

网络安全检测

实验目的与要求 (1) 帮助学生掌握木马和入侵的防护和检测方法、提高学习能力、应用能力和解决实际问题的能力。 (2) 要求学生掌握方法, 学会应用软件的安装和使用方法, 并能将应用结果展示出来。 实验原理与内容 入侵检测是通过对计算机网络或计算机系统中若干关键点收集信…

谷歌浏览器的资源管理功能详解

谷歌浏览器作为一款广受欢迎的网页浏览器&#xff0c;不仅以其快速、简洁和易用著称&#xff0c;还提供了强大的资源管理功能。本文将详细介绍如何在Chrome浏览器中进行资源管理&#xff0c;包括查看网页的渲染性能、禁用标签页的背景更新以及管理正在下载的文件。&#xff08;…