前言

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

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

三种优惠类型

目前,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.sh

EXPOSE 80

CMD /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个月免费,快来认领

通过 管理控制台开始使用

Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐