参考官方文档:https://docs.amazonaws.cn/AmazonECR/latest/userguide/what-is-ecr.html
AWS CLI:https://docs.aws.amazon.com/zh_cn/cli/latest/index.html
AWS ECR CLI:https://docs.aws.amazon.com/zh_cn/cli/latest/reference/ecr/index.html
Amazon Elastic Container Registry (Amazon ECR)
是 Amazon 托管容器映像注册表服务
,它安全、可扩展且可靠。Amazon ECR 支持私有存储库
,其具有使用 Amazon IAM 的基于资源的权限。这样,指定用户或 Amazon EC2 实例可以访问您的容器存储库和映像。您可以使用首选 CLI 推送
、提取和管理 Docker 映像
、Open Container Itistry (OCI) 映像和 OCI 兼容构件。
注册表
我们为每个 Amazon 账户均提供了一个 Amazon ECR 私有注册表
;您可以在注册表中创建一个或以上存储库,并在其中存储镜像。
Amazon ECR 私有注册表通过高度可用且可扩展的架构托管容器镜像
私有注册表概念
:
https://``aws_account_id.dkr.ecr.region.amazonaws.com
。读取和写入
私有注册表中的存储库。但是IAM 用户
需拥有调用 Amazon ECR API
的权限
才能从私有存储库中推送或提取镜像。Amazon ECR 提供了多个托管策略来控制不同级别的用户访问。为 Docker 客户端授予注册表权限
,以便使用 docker push 和 docker pull 命令对该私有注册表中的存储库执行推送和提取镜像操作。控制
。授权令牌
Docker 客户端必须作为 Amazon 用户向 Amazon ECR 注册表进行身份验证
,然后才能推送和提取映像。
存储库
Amazon ECR 存储库包含您的 Docker 镜像、Open Container Initiative (OCI) 镜像和 OCI 兼容构件。
存储库策略
您可以通过存储库策略
来控制对存储库及其中的映像的访问。
映像
可以对存储库推送和提取容器映像。这些映像可以在开发系统中本地使用,也可以在 Amazon ECS 任务定义
和 Amazon EKS Pod
规范中使用
生命周期策略有助于管理存储库中映像的生命周期
。您可以定义导致清理未使用映像的规则。您
映像扫描
有助于识别容器映像中的软件漏洞`。每个存储库都可以配置为在推送时扫描。
跨区域和跨账户复制使您可以更轻松地将映像放置在需要的位置。它配置为注册表设置,并基于每个区域。
缓存提取规则
提供了在私有 Amazon ECR 注册表中缓存远程公有注册表中的存储库的方法。使用缓存提取规则时,Amazon ECR 将定期访问远程注册表
,以确保 Amazon ECR 私有注册表中缓存的镜像为最新状态。
Amazon 中的服务 (例如 Amazon ECR) 要求在访问时提供凭证,以便服务可以确定是否有权限访问其资源可以为您的 Amazon 账户创建访问密钥以访问命令行界面或 API。不建议使用 Amazon 账户的凭证访问 Amazon,而建议改用 Amazon Identity and Access Management (IAM)。
创建 IAM 用户,然后将该
用户添加到具有管理权限的
IAM 组`或授予此用户管理权限。然后,就可以使用专门的 URL 和该 IAM 用户的凭证来访问 Amazon。
如果您已注册 Amazon 但尚未为自己创建一个 IAM 用户,则可以使用 IAM 控制台自行创建。
自行创建管理员用户并将该用户添加到管理员组 (控制台)
2.在导航窗格中,选择 Users(用户),然后选择 Add users(添加用户)。
3.对于 User name(用户名),输入 Administrator
。
4.选中 Amazon Web Services Management Console access (Amazon Web Services Management Console 管理控制台访问)旁边的复选框。然后选择自定义密码,并在文本框中输入新密码。
5.(可选)默认情况下,Amazon要求新用户在首次登录时创建新密码。可以清除 User must create a new password at next sign-in(用户必须在下次登录时创建新密码)旁边的复选框以允许新用户在登录后重置其密码。
6.选择下一步: 权限。
7.在设置权限下,选择将用户添加到组。
8.选择创建组。
9.在 Create group(创建组)对话框中,对于 Group name(组名称),输入 Administrators
。
10.选择 Filter policies(筛选策略),然后选择 Amazon managed - job function(Amazon 托管 – 工作职能)以筛选表内容。
11.在策略列表中,选中 AdministratorAccess 的复选框。然后选择 Create group(创建组)。
注意
必须先激活 IAM 用户和角色对账单的访问权限,然后才能使用 AdministratorAccess
权限访问 Amazon Billing and Cost Management 控制台。
返回到组列表中,选中您的新组所对应的复选框。如有必要,选择 Refresh(刷新)以在列表中查看该组。
选择下一步: 标签。
(可选) 通过以键值对的形式附加标签来向用户添加元数据。
选择 Next: Review(下一步:审核)以查看要添加到新用户的组成员资格的列表。如果您已准备好继续,请选择 Create user(创建用户)。
可使用这一相同的流程创建更多组和用户,并允许您的用户访问 Amazon Web Services 账户 资源。
要以该新 IAM 用户的身份登录,请从 Amazon 控制台注销,然后使用以下 URL,其中 your_aws_account_id 是您的 Amazon 账号,不带连字符 (例如,如果您的 Amazon 账号是 1234-5678-9012
,则您的 Amazon 账户 ID 是 123456789012
):
https://your_aws_account_id.signin.aws.amazon.com/console/
输入您刚创建的 IAM 用户名和密码。登录后,导航栏显示“your_user_name @ your_aws_account_id”。
如果您不希望您的登录页面 URL 包含 Amazon 账户 ID,可以创建账户别名。从 IAM 控制面板,选择自定义,然后输入账户别名
要在创建账户别名后登录,请使用以下 URL:
https://your_account_alias.signin.aws.amazon.com/console/
要为您的账户验证 IAM 用户的登录链接,请打开 IAM 控制台并在控制面板的 IAM 用户登录链接下进行检查。
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
sudo yum update -y
sudo amazon-linux-extras install docker
sudo service docker start
sudo usermod -a -G docker ec2-user
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
存储库是存储 Amazon ECR 中 Docker 或 Open Container Initiative (OCI) 映像的地方,
1.打开位于 Amazon ECR 控制台。
2.选择开始使用。
3.对于 Visibility settings(可见性设置),请选择 Private(私密)。
4.对于 Repository name(存储库名称),请指定存储库的名称。
5.对于标签不变性,选择存储库的标签可变性设置。配置有不可变标签的存储库会阻止覆盖映像标签。
6.对于推送扫描,选择存储库的映像扫描设置。配置为在推送时进行扫描的存储库将在每次推送映像时启动映像扫描,否则需要手动启动映像扫描。
CLI创建
:
#aws ecr create-repository \
--repository-name hello-world \
--image-scanning-configuration scanOnPush=true \
--region region
#docker tag hello-world:latest aws_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
#docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
在推送镜像到 Amazon ECR 存储库后,可以从其他位置提取该镜像。可使用 docker CLI 提取镜像,但必须满足以下几个先决条件才能正常使用:
在满足这些先决条件后,即可提取镜像。要从 Amazon ECR
提取示例镜像,请运行以下命令:
docker pull aws_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
使用 batch-delete-image
命令将其删除。要删除镜像,必须指定它所在的存储库,并指定镜像的 imageTag
或 imageDigest
值。以下示例删除 hello-world
存储库中镜像标签为 latest
的镜像
aws ecr batch-delete-image \
--repository-name hello-world \
--image-ids imageTag=latest \
--region region
默认情况下,您不能删除包含镜像的存储库;--force
标记允许此操作。
aws ecr delete-repository \
--repository-name hello-world \
--force \
--region region