简介
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 。 - 对于从私有存储库传输的数据
- 对于从公有存储库传输的数据
使用
在控制台上操作
-
创建存储库
点击入门 -
创建的时候可以选择公有或私有的存储库
这一步可以直接上传文件,也可以通过docker push上传。 -
建一个私有存储库
-
点击进去后,可以查看推送目录
使用 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命令可以从该镜像仓库中的存储库中推送和拉取镜像。具体请参阅 私有注册表验证
- 检查基本设置
[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]:
- 从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
- 身份验证
[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
- 为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
- 上传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
- 在控制台检查
客户端下载
-
复制URL
-
在客户端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
成功
公有存储库上传的流程一样,下载不用做身份验证。