简介

Amazon Elastic Container Registry (Amazon ECR) 是AWS托管容器映像注册表服务,它安全、可扩展且可靠。Amazon ECR 支持具有基于资源的权限的私有容器映像存储库,使用AWSIAM。这样,指定用户或 Amazon EC2 实例可以访问容器存储库和映像。用户可以使用首选 CLI 推送、拉取和管理 Docker 映像、Open Container Ititistry (OCI) 映像和 OCI 兼容构件。
在这里插入图片描述

Amazon ECR 的组件注册表

  • 注册表
    亚马逊 ECR 注册表提供给每个AWS帐户;可以在注册表中创建映像存储库,并在其中存储映像。
  • 授权令牌
    客户必须向 Amazon ECR 注册表进行身份验证,作为AWS用户才能推送和拉取私有映像。
  • 存储库
    Amazon ECR 映像存储库包含 Docker 映像、Open Container Ititistry (OCI) 映像和 OCI 兼容构件。
  • 存储库策略
    可以通过存储库策略来控制对存储库及其中的映像的访问。
  • 映像
    可以对存储库推送和拉取容器映像。这些映像可以在开发系统中本地使用,也可以在 Amazon ECS 任务定义和 Amazon EKS Pod 规范中使用

Amazon ECR 的功能

Amazon ECR 提供以下功能:

  • 生命周期策略有助于管理存储库中映像的生命周期。可以定义导致清理未使用的图像的规则;也可以在将规则应用到存储库之前对其进行测试。
  • 映像扫描有助于识别容器映像中的软件漏洞。每个存储库都可以配置为推送时扫描。这可确保扫描推送到存储库的每个新映像,用户可以检索图像扫描的结果。
  • 跨区域和跨账户复制,使用户可以更轻松地将映像放置在需要的位置。这配置为注册表基于每个区域设置。

Amazon ECR 的定价

由于我使用的是全球账户,Region在新加坡,参考以下定价

AWS 免费套餐 *

作为 AWS 免费套餐的一部分,Amazon ECR 新客户可以获得每月 500 MB 的私有存储库存储空间 ,为期一年。
作为新客户或现有客户,Amazon ECR 为您的公有存储库提供每月 50 GB 的长期免费存储空间。您每月可以免费从公有存储库向 Internet 匿名传输 500 GB 的数据(不使用 AWS 账户)。 如果您注册了 AWS 账户,或使用现有 AWS 账户进行了 ECR 认证,则您每月可以从公有存储库向 Internet 免费传输 5 TB 的数据,并且当您将数据从公有存储库传输到任何 AWS 区域的 AWS 计算资源时,您可以免费获得无限制的带宽。
免费使用量每个月计算一次,包含所有地区并自动计入到账单中,免费使用量不能累积。

超出免费套餐限制的部分定价详细信息
  • 存储:
    对于存储在私有或公有存储库上的数据,存储的定价是每月每 GB 0.10 USD 。
  • 对于从私有存储库传输的数据
    在这里插入图片描述
  • 对于从公有存储库传输的数据
    在这里插入图片描述

使用

在控制台上操作

  1. 创建存储库
    在这里插入图片描述
    点击入门

  2. 创建的时候可以选择公有或私有的存储库
    在这里插入图片描述
    在这里插入图片描述
    这一步可以直接上传文件,也可以通过docker push上传。

  3. 建一个私有存储库
    在这里插入图片描述

  4. 点击进去后,可以查看推送目录

使用 AWS CLI:

aws ecr get-login-password --region ap-southeast-1 | docker login --username AWS --password-stdin 0982420002.dkr.ecr.ap-southeast-1.amazonaws.com

使用以下命令生成 Docker 映像。如果已生成映像,则可跳过此步骤:

docker build -t network-multitool .

标记映像

docker tag network-multitool:latest 0982420002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool:latest

推送映像

docker push 098246620002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool:latest

客户端上传(CentOS7)

每个AWS账户提供默认私有 Amazon ECR 注册表,需要安装AWS Cli和Docker。
必须为 Docker 客户端授予镜像仓库权限,以便使用docker push和docker pull命令可以从该镜像仓库中的存储库中推送和拉取镜像。具体请参阅 私有注册表验证

  1. 检查基本设置

[root@aws-client ~]# aws configure
AWS Access Key ID [****************MK75]:
AWS Secret Access Key [****************0ETZ]:
Default region name [ap-southeast-1]:
Default output format [json]:

  1. 从dockers.io下载image

[root@aws-client ~]# docker pull praqma/network-multitool
Using default tag: latest
latest: Pulling from praqma/network-multitool
540db60ca938: Pull complete
79a6663b731b: Pull complete
922bc16268b4: Pull complete
478ea98fd9bb: Pull complete
1451980ffb9e: Pull complete
Digest: sha256:7222852f7f120b44268f5bb8e2631bc667d740bd62dfc9eb695e89babd3e6d71
Status: Downloaded newer image for praqma/network-multitool:latest
docker.io/praqma/network-multitool:latest
[root@aws-client ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
praqma/network-multitool latest 293c239dd855 3 months ago 38.1MB

  1. 身份验证

[root@aws-client ~]# aws ecr get-login-password --region ap-southeast-1 | docker login --username AWS --password-stdin 0982420002.dkr.ecr.ap-southeast-1.amazonaws.com
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

  1. 为Image打tag

[root@aws-client ~]# docker tag praqma/network-multitool:latest 0982420002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool:latest
[root@aws-client ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
098246620002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool latest 293c239dd855 3 months ago 38.1MB
praqma/network-multitool latest 293c239dd855 3 months ago 38.1MB

  1. 上传Image

[root@aws-client ~]# **docker push 0982420002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool:latest **
The push refers to repository [098246620002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool]
1d7bbe9a9a95: Pushed
a3f5f0fbb011: Pushed
d1cedc16831d: Pushed
6f594e0f85a0: Pushed
b2d5eeeaba3a: Pushed
latest: digest: sha256:1a546071c99290fa1d02f8ded26070e1e5711efeb02b3208752b92834f058948 size: 1361

  1. 在控制台检查
    在这里插入图片描述

客户端下载

  1. 复制URL
    在这里插入图片描述

  2. 在客户端pull

[root@aws-client ~]# docker pull 098246620002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool:latest
latest: Pulling from network-multitool
540db60ca938: Pull complete
79a6663b731b: Pull complete
922bc16268b4: Pull complete
478ea98fd9bb: Pull complete
1451980ffb9e: Pull complete
Digest: sha256:1a546071c99290fa1d02f8ded26070e1e5711efeb02b3208752b92834f058948
Status: Downloaded newer image for 098246620002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool:latest
098246620002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool:latest

成功

公有存储库上传的流程一样,下载不用做身份验证。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐