什么是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

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro