ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Amazon Elastic Container Registry (ECR) 笔记

2021-10-26 00:01:54  阅读:278  来源: 互联网

标签:Container CLI Elastic AWS 映像 Amazon ECR ecr


Amazon Elastic Container Registry (ECR)

完成了 Docker 容器映像 (Container Image) 的制作,接着我们必须要这个影像布署到各个容器,所以我们要考虑的是如何储存这个影像。 Amazon Elastic Container Registry (ECR) 是一个全受管的 Docker 容器登录档,可让开发人员存放、管理以及部署 Docker 容器映像,可以让开发人员不必操作自己的容器储存库,也不必担心如何扩展基础设施,更重要的是使用 Amazon ECR 没有预付费用或长期合约,只需为储存库中存放的数据量以及传输到因特网的数据支付费用。

在将 Docker 容器映像放入 Amaon ECR 中时,先确认一下容器映像的大小以及执行时所占用的内存

# 查看 Container 的 CPU、内存及网络使用
docker stats
# 列出本机映像档
docker images

  
  
  • 1
  • 2
  • 3
  • 4

由图中可以看出来整个映像档占了 464MB ,这主要的原因是 Dockerfile 里指定底层的 Bins/Libs 为 amazonlinux:2 以及安装了 wget/httpd/php 这三个套件,可以选择用busybox可以让整个映像档小一点,另外要考虑的是执行时暂用多少的内存,因为底层的 EC2 只有 1G 的内存。

检查容器映像的状态
图 01. 检查容器映像的状态

安装并设定妥 AWS CLI
因为我们使用的 Amazon EC2 是 Amazon Linux 2 的 AMI ,所以不需再安装 AWS CLI ,先检查一下 CLI的版本

[ec2-user@ip-172-16-0-23 ~]$ aws --version
aws-cli/1.18.107 Python/2.7.18 Linux/4.14.193-149.317.amzn2.x86_64 botocore/1.17.31

  
  
  • 1
  • 2

因为我们需要透过 AWS CLI 将 EC2 内的映像档上传到 Amazon ECR ,所以必须让AWS CLI有权限可以存取 Amazon ECR,这时候必须先让目前的 AWS 使用者拥有使用AWS CLI的权限,这个权限必须在 Identity and Access Management (IAM)中得到授权。在 IAM 控制台中选择登入管理控制台的账号,在安全登入数据页签中,确认是否有建立存取密钥,若有应该就会有一个档案,通常档名是 accessKeys.csv ,里面会有两个字段,分别是 Access key ID, Secret access key。

透过 AMI 来取得存取密钥
图 02. 透过 AMI 来取得存取密钥

# 设定 AWS CLI 的存取凭证,需要指定 Access key ID, Secret access key, 所在区域,输入格式,后面两项是可选的
aws configure
# 取得Amazon ECR的授权,如果成功会出现 Login Succeeded 
(`aws ecr get-login --no-include-email --region ap-southeast-1`)

  
  
  • 1
  • 2
  • 3
  • 4

设定 AWS CLI
图 03. 设定 AWS CLI

据说如果是 AWS CLI 2 使用以下语法,有兴趣的可以参阅 Amazon ECR 登记
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

建立 Amazon ECR 储存库

输入建立 Amazon ECR 储存库的语法,标明了储存库的名称以及所在的区域

aws ecr create-repository \
    --repository-name ithome-repo \
    --image-scanning-configuration scanOnPush=true \
    --region ap-southeast-1

  
  
  • 1
  • 2
  • 3
  • 4

成功后会产出储存库的说明,以JSON方式输出, repositoryUri 这个字段就是下一步要上传用的目标

{
    "repository": {
        "repositoryUri": "950646218716.dkr.ecr.ap-southeast-1.amazonaws.com/ithome-repo",
        "imageScanningConfiguration": {
            "scanOnPush": true
        },
        "encryptionConfiguration": {
            "encryptionType": "AES256"
        },
        "registryId": "950646218716",
        "imageTagMutability": "MUTABLE",
        "repositoryArn": "arn:aws:ecr:ap-southeast-1:950646218716:repository/ithome-repo",
        "repositoryName": "ithome-repo",
        "createdAt": 1600778554.0
    }
}

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

使用 AWS CLI 建立储存库
图 04. 使用 AWS CLI 建立储存库

其实直接用管理控制台来操作也是可以的,进入 ECS 控制台,特别注意是进入 ECS 控制台, ECR 只是 ECS 的部分功能而已,选择左边选单中的 Amazon ECR 下的 Repositories,选择 Create repository

ECS 控制台
图 05. ECS 控制台

你会发现刚刚使用 AWS CLI 的设定都有,的确,有经验的开发者其时会比较喜欢用 AWS CLI 的方式来操作,因为可以直接存成文件

使用控制台建立储存库
图 06. 使用控制台建立储存库

标记映像并上传
为 ithome-container 映像标记上一步中的 repositoryUri 值。

docker tag ithome-container 950646218716.dkr.ecr.ap-southeast-1.amazonaws.com/ithome-repo
# 使用先前步骤中的 repositoryUri 值,将映像推送至 Amazon ECR。
docker push 950646218716.dkr.ecr.ap-southeast-1.amazonaws.com/ithome-repo

  
  
  • 1
  • 2
  • 3

使用AWS CLI 上传映像至储存库
图 07. 使用AWS CLI 上传映像至储存库

ECS 控制台确认映像
图 08. ECS 控制台确认映像

确认映像可以正常运作

登入另一台计算机使用的是 Ubuntu 16.04.6 LTS,而非 Amazon Linux 2

# 关闭服务器的网页服务器
sudo /etc/init.d/apache2 stop
# 取得 Amazon ECR 访问权限,可能没那么简单,还得重新设定一次
(`aws ecr get-login --no-include-email --region ap-southeast-1`)
# 下载映像档
docker pull 950646218716.dkr.ecr.ap-southeast-1.amazonaws.com/ithome-repo:latest
# 标签映像文件
docker tag 950646218716.dkr.ecr.ap-southeast-1.amazonaws.com/ithome-repo:latest simple-php:latest 
# 执行映像档
docker run -t -i -p 80:80 simple-php:latest

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

映像档下载
图 09. 映像档下载

映像文件标签并执行
图 10. 映像文件标签并执行

检视执行结果
图 11. 检视执行结果

References

  • Amazon Elastic Container Registry, https://aws.amazon.com/cn/ecr/
  • 安装 AWS CLI,https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html
  • docker-tutorial, https://github.com/twtrubiks/docker-tutorial
  • Container指令基础, https://joshhu.gitbooks.io/dockercommands/content/Containers/ContainersBasic.html
    hub.com/twtrubiks/docker-tutorial
  • Container指令基础, https://joshhu.gitbooks.io/dockercommands/content/Containers/ContainersBasic.html

标签:Container,CLI,Elastic,AWS,映像,Amazon,ECR,ecr
来源: https://blog.csdn.net/czcit_ai_cloud/article/details/120963188

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有