什么是Amazon Elastic Container Registry(Amazon ECR)及实践体验

2024-08-29 02:04

本文主要是介绍什么是Amazon Elastic Container Registry(Amazon ECR)及实践体验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 前言
    • 亚马逊云服务免费体验中心
    • 三种优惠类型
  • Amazon ECR
    • 什么是Amazon ECR
    • 为什么选择 Amazon ECR?
    • Amazon ECR 的优势
    • 关键功能详情
    • 工作原理
  • 实践
    • 使用 Amazon CLI 和 Docker 将容器映像推送到私有 Amazon ECR 存储库
      • 先决条件
      • 一、创建 Docker 映像
      • 二、向默认注册表进行身份验证
      • 三、创建存储库
      • 四、将图像推送到 Amazon ECR
      • 五、从 Amazon ECR 提取图像
  • 总结
  • 附录

前言

亚马逊云服务免费体验中心

最近亚马逊云服务提供了超多免费的云服务,快来领取免费套餐:亚马逊云服务免费体验中心
在这里插入图片描述

三种优惠类型

目前,Amazon Free Tier 提供 100 多种 亚马逊云科技 产品。根据所使用的产品,有三种不同类型的免费优惠可供选择。
在这里插入图片描述

现在就立即去亚马逊云服务免费体验中心,选择你的免费云产品和服务吧

在这里插入图片描述

亚马逊云服务免费体验中心


Amazon ECR

什么是Amazon ECR

Amazon ECR 是一种 亚马逊云科技 托管容器映像注册服务,安全、可扩展且可靠。

为什么选择 Amazon ECR?

Amazon ECR 无需操作和扩展增强容器注册表功能所需的基础设施。 Amazon ECR映像存储在高度可用、可扩展的基础架构中,能够为应用程序可靠部署容器。与 Amazon Identity and Access Management(IAM) 的集成提供了对每个存储库的资源级控制,能够跨组织或与世界上任何人共享映像。

Amazon ECR 使用 Amazon Simple Storage Service (S3) 进行存储,可确保容器映像高度可用且可访问,允许可靠地为应用程序部署新的容器。Amazon ECR 通过 HTTPS 传输容器映像,然后自动对静态映像进行加密。我们可以通过配置策略来管理每个存储库的权限并限制对 IAM 用户、角色或其他 亚马逊云科技 账户的访问。Amazon ECR 与 Amazon ECS、Amazon EKS、Amazon Fargate、Amazon Lambda 和 Docker CLI 集成,能够简化开发和生产工作流。同时我们可以使用 Docker CLI 轻松将容器映像从开发计算机推送到 Amazon ECR,并且 Amazon 容器编排工具或计算可以直接将其取回进行生产部署。

Amazon ECR 的优势

  • 便捷推送或拉取镜像:无需安装或扩展基础设施即可将容器映像推送到 Amazon ECR,并使用任何管理工具拉取映像。
  • 安全地共享和下载映像:通过具有自动加密和访问控制的安全超文本传输协议(HTTPS)安全地共享和下载映像。
  • 可扩展:使用可扩展、持久的架构更快地访问和分发映像、缩短下载时间并提高可用性。

关键功能详情

  • Amazon 容器编排工具集成 : Amazon Elastic Container Registry (Amazon ECR) 与 Amazon Elastic Container Service (Amazon ECS) 和 Amazon Elastic Kubernetes Service (Amazon EKS) 集成,这意味着可以使用任一编排工具为应用程序轻松存储并运行容器映像。我们需要做的只是在任务或 Pod 定义中指定 Amazon ECR 存储库,以便 Amazon ECS 或 Amazon EKS 为应用程序检索适当的映像。

  • OCI 和 Docker 支持 : Amazon ECR 支持 Open Container Initiative (OCI) 标准和 Docker 注册表 HTTP API V2。能够使用 Docker CLI 命令(如 push、pull、list、tag)或其他Docker 工具与 Amazon ECR 进行交互,从而维护现有开发工作流程。我们可以从任意 Docker 环境(不论在云中、本地还是本地计算机上)轻松访问 Amazon ECR。Amazon ECR 能够将 Docker 容器映像和相关的 OCI 构件存储到我们的存储库。

  • 公有容器映像和构件库 : 我们可以使用供应商、开源项目和社区开发人员在 Amazon ECR 公有库上公开共享的容器软件。可在库中找到操作系统、发布的映像、Kubernetes 附加功能和各种文件(如 Helm 图表)等热门基础映像。无需使用 亚马逊云科技 账户即可搜索或提取公有映像,但是使用 亚马逊云科技 账户能够更方便快速地使用公有容器软件。

  • Amazon Marketplace:Amazon ECR 将会存储我们创建的容器以及通过 Amazon Marketplace 购买的任何容器软件。适用于 Container 的 Amazon Marketplace 为高性能计算、安全性和开发人员工具以及管理、分析和保护容器应用程序的 SaaS 产品提供经验证的容器软件。

  • 高可用性和持久性:Amazon ECR 将我们的容器映像和构件存储在 Amazon S3 中。Amazon S3 可达到 99.999999999%(11 个 9)的数据持久性,因为 S3 会自动创建并存储跨多个系统的所有 S3 对象的副本。这意味着我们的数据在需要时可用,并可抵御故障、错误和威胁。对于高可用性应用程序,Amazon ECR 还能自动将数据复制到多个 亚马逊云科技 区域。

  • 团队和公开协作:凭借 Amazon ECR,我们可以使用命名空间在注册表中定义并整理存储库。根据团队的现有工作流程整理存储库。通过资源级策略设置其他用户可在存储库上执行的 API 操作(如 create、list、describe、delete 和 get),轻松地与其他用户和 亚马逊云科技 账户共享存储库。同时可以与世界上的任何人轻松共享我们的容器构件,只需将其存储在公有存储库中即可。

  • 访问控制:Amazon ECR 使用 Amazon Identity and Access Management (IAM) 来控制和监控哪些人以及哪些对象(例如 EC2 实例)可以访问您的容器映像。通过 IAM,您可以定义策略,以便允许同一 亚马逊云科技 账户或其他账户中的用户访问您位于私有存储库中的容器映像。您还可以为不同用户和角色指定不同的权限(例如,推送、提取或完全管理员权限),从而进一步改进这些策略。世界上的任何人都能够访问您存储在公有数据库中,供全球协作的容器映像。

  • 加密:可以通过 HTTPS 将容器映像传输到 Amazon ECR,或者从其中传出映像。映像还能够使用 Amazon S3 服务器端加密自动实现静态加密。Amazon ECR 还可以选择由 Amazon Key Management Service (Amazon KMS) 管理的自己的密钥,以加密静态映像。

  • 第三方集成:Amazon ECR 能够与第三方开发人员工具集成。将 Amazon ECR 集成到连续的集成和交付流程中,以维护现有的开发工作流程。

  • 拉式缓存存储库:使用 Amazon ECR 的拉式缓存存储库,可以检索、存储和同步存储在可公开访问的容器注册表中的容器工件。为我们提供了需要的高下载速率,以及依赖的可用性、安全性和规模。通过频繁的注册表同步和无需管理其他工具,拉式缓存存储库可以帮助我们保持公共注册表的容器映像最新信息。

工作原理

Amazon Elastic Container Registry(Amazon ECR)是完全托管式容器注册表,提供高性能托管,能在任何地方可靠地部署应用程序映像和构件。

在这里插入图片描述


实践

使用 Amazon CLI 和 Docker 将容器映像推送到私有 Amazon ECR 存储库

如果是首次使用 Amazon ECR,需要使用 Docker CLI 和 Amazon CLI 执行以下步骤来创建示例映像、对默认注册表进行身份验证以及创建私有存储库。然后将映像推送到私有存储库并从私有存储库中提取映像。

先决条件

安装并准备使用最新的 Amazon CLI 和 Docker

一、创建 Docker 映像

此步骤中,将创建一个简单的 Web 应用程序的 Docker 映像,并在本地系统或 Amazon EC2 实例上对其进行测试。

创建简单 Web 应用程序的 Docker 映像

  1. 创建一个名为 的文件Dockerfile。Dockerfile 是一个清单,它描述了 Docker 映像要使用的基础映像以及要在其上安装和运行的内容。
touch Dockerfile
  1. 编辑Dockerfile刚刚创建的并添加以下内容。
FROM public.ecr.aws/amazonlinux/amazonlinux:latest# Install dependencies
RUN yum update -y && \yum install -y httpd# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html# Configure apache
RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \chmod 755 /root/run_apache.shEXPOSE 80CMD /root/run_apache.sh

此 Dockerfile 使用托管在 Amazon ECR Public 上的公共 Amazon Linux 2 映像。指令RUN更新包缓存,为 Web 服务器安装一些软件包,然后将“Hello World!”内容写入 Web 服务器文档根目录。指令EXPOSE在容器上公开端口 80,并CMD启动 Web 服务器。

  1. 从 Dockerfile 构建 Docker 映像
docker build -t hello-world .
  1. 列出容器镜像。
docker images --filter reference=hello-world

输出:

存储库标签 图像 ID 创建 大小
hello-world 最新 e9ffedc8c286 4分钟前 194MB
  1. 运行新构建的映像。该-p 80:80选项将容器上公开的端口 80 映射到主机系统上的端口 80。
docker run -t -i -p 80:80 hello-world
  1. 打开浏览器并指向运行 Docker 并托管您的容器的服务器。
  • 如果使用的是 EC2 实例,则这是服务器的公共 DNS值,它与通过 SSH 连接到实例时使用的地址相同。确保实例的安全组允许端口 80 上的入站流量。

  • 如果在本地运行 Docker,将浏览器指向本地

  • 如果在 Windows 或 Mac 计算机上使用docker-machine ,使用docker-machine ip命令找到托管 Docker 的 VirtualBox VM 的 IP 地址,并将其替换machine-name为所使用的 docker 机器的名称。

docker-machine ip machine-name

应该会看到一个包含“Hello World!”语句的网页。

  1. 通过输入Ctrl + c来停止 Docker 容器。

二、向默认注册表进行身份验证

安装并配置 Amazon CLI 后,向默认注册表验证 Docker CLI。这样,docker命令就可以使用 Amazon ECR
推送和提取映像。Amazon CLI 提供了get-login-password命令来简化身份验证过程。

要使用 get-login-password 向 Amazon ECR 注册表验证 Docker 身份,需要运行aws ecr get-login-password命令。将身份验证令牌传递给docker login命令时,使用用户名的值并指定要验证身份的 Amazon ECR 注册表 URI。如果要向多个注册表验证身份,则必须对每个注册表重复该命令。

  • 获取登录密码(Amazon CLI)
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  • Get-ECRLoginCommand (适用于 Windows PowerShell 的 亚马逊云科技 工具)
(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

三、创建存储库

现在已经有了要推送到 Amazon ECR 的映像,必须创建一个存储库来保存它。
创建一个名为的存储库,hello-repository稍后将hello-world:latest映像推送到该存储库。

创建存储库命令:

aws ecr create-repository \--repository-name hello-repository \--region region

四、将图像推送到 Amazon ECR

将映像推送到上面创建的 Amazon ECR 存储库。满足以下先决条件后,使用docker CLI 推送映像:

  • 安装的docker最低版本:1.7。
  • 使用docker login配置 Amazon ECR 授权令牌。
  • Amazon ECR 存储库存在,并且用户有权推送到该存储库。

满足这些先决条件后,可以将图像推送到帐户的默认注册表中新创建的存储库。

标记映像并将映像推送到 Amazon ECR

  1. 列出本地存储的图像,以识别要标记和推送的图像。
docker images

输出:

存储库标签 图像 ID 创建 虚拟尺寸
hello-world 最新 e9ffedc8c286 4分钟前 241MB
  1. 标记要推送到存储库的图像。
docker tag hello-world:latest aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
  1. 推送图像。
docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository

输出:

推送指的是存储库 [ aws_account_id.dkr.ecr. region.amazonaws.com/hello-repository] ​​(len: 1)
e9ae3c220b23:已推送
a6785352b25c:已推送
0998bf8f​​b9e9:已推送
0a85502c06c9:已推送
最新:摘要:sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636示例大小:6774

五、从 Amazon ECR 提取图像

将映像推送到 Amazon ECR 存储库后,可以从其他位置提取它。满足以下先决条件后,使用docker CLI 提取映像:

  • 安装的docker最低版本:1.7。
  • 使用docker login配置 Amazon ECR 授权令牌。
  • Amazon ECR 存储库存在,并且用户有权从存储库中提取数据。

满足这些先决条件后,就可以提取映像了。

从 Amazon ECR 提取映像,请运行以下命令:

docker pull aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest

输出:

最新:从 hello-repository 中提取
0a85502c06c9:拉取完成
0998bf8f​​b9e9:拉取完成
a6785352b25c:拉取完成
e9ae3c220b23:拉取完成
摘要:sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636示例
状态:已下载aws_account_id.dkr 的较新图像。.amazonaws.com region/hello-repository:latest

可以看到我们需要的图像已经从存储库中下载下来了,如果不再需要某个存储库中的某个映像,则可以删除该映像。

至此,一个简单的Amazon ECR实践就完毕了。


总结

总的来说,这次亚马逊云Amazon ECR 的体验还是不错的,特别是优惠力度很大。

目前来说 亚马逊云服务免费体验中心提供100余种云产品和服务,对于广大开发者来说是一件好事,大家可以多多体验。

附录

亚马逊云服务免费体验中心

Amazon ECR - 12个月免费,快来认领

通过 管理控制台开始使用

这篇关于什么是Amazon Elastic Container Registry(Amazon ECR)及实践体验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116531

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

Prometheus与Grafana在DevOps中的应用与最佳实践

Prometheus 与 Grafana 在 DevOps 中的应用与最佳实践 随着 DevOps 文化和实践的普及,监控和可视化工具已成为 DevOps 工具链中不可或缺的部分。Prometheus 和 Grafana 是其中最受欢迎的开源监控解决方案之一,它们的结合能够为系统和应用程序提供全面的监控、告警和可视化展示。本篇文章将详细探讨 Prometheus 和 Grafana 在 DevO

springboot整合swagger2之最佳实践

来源:https://blog.lqdev.cn/2018/07/21/springboot/chapter-ten/ Swagger是一款RESTful接口的文档在线自动生成、功能测试功能框架。 一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的呈现。 SpringBoot集成 pom <!--swagge

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

【HarmonyOS】-TaskPool和Worker的对比实践

ArkTS提供了TaskPool与Worker两种多线程并发方案,下面我们将从其工作原理、使用效果对比两种方案的差异,进而选择适用于ArkTS图片编辑场景的并发方案。 TaskPool与Worker工作原理 TaskPool与Worker两种多线程并发能力均是基于 Actor并发模型实现的。Worker主、子线程通过收发消息进行通信;TaskPool基于Worker做了更多场景化的功能封装,例

vue2实践:第一个非正规的自定义组件-动态表单对话框

前言 vue一个很重要的概念就是组件,作为一个没有经历过前几代前端开发的我来说,不太能理解它所带来的“进步”,但是,将它与后端c++、java类比,我感觉,组件就像是这些语言中的类和对象的概念,通过封装好的组件(类),可以通过挂载的方式,非常方便的调用其提供的功能,而不必重新写一遍实现逻辑。 我们常用的element UI就是由饿了么所提供的组件库,但是在项目开发中,我们可能还需要额外地定义一

《C++中的移动构造函数与移动赋值运算符:解锁高效编程的最佳实践》

在 C++的编程世界中,移动构造函数和移动赋值运算符是提升程序性能和效率的重要工具。理解并正确运用它们,可以让我们的代码更加高效、简洁和优雅。 一、引言 随着现代软件系统的日益复杂和对性能要求的不断提高,C++程序员需要不断探索新的技术和方法来优化代码。移动构造函数和移动赋值运算符的出现,为解决资源管理和性能优化问题提供了有力的手段。它们允许我们在不进行不必要的复制操作的情况下,高效地转移资源

C++入门(06)安装QT并快速测试体验一个简单的C++GUI项目

文章目录 1. 清华镜像源下载2. 安装3. 开始菜单上的 QT 工具4. 打开 Qt Creator5. 简单的 GUI C++ 项目5.1 打开 Qt Creator 并创建新项目5.2 设计界面5.3 添加按钮的点击事件5.4 编译并运行项目 6. 信号和槽(Signals and Slots) 这里用到了C++类与对象的很多概念 1. 清华镜像源下载 https://

Vue3+elementplus实现图片上传下载(最强实践)

图片上传子组件: 实现照片的上传,预览,以及转成以逗号隔开的图片地址,即时监听,并发送消息到父组件。 <!-- ImageUploader.vue --> <template><div><el-upload class="avatar-uploader" :http-request="customUpload" :before-upload="beforeUpload":show-fil