天天看點

AWS-Elastic Container Registry ECR使用

簡介

Amazon Elastic Container Registry (Amazon ECR) 是AWS托管容器映像系統資料庫服務,它安全、可擴充且可靠。Amazon ECR 支援具有基于資源的權限的私有容器映像存儲庫,使用AWSIAM。這樣,指定使用者或 Amazon EC2 執行個體可以通路容器存儲庫和映像。使用者可以使用首選 CLI 推送、拉取和管理 Docker 映像、Open Container Ititistry (OCI) 映像和 OCI 相容構件。

AWS-Elastic Container Registry ECR使用

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 。

  • 對于從私有存儲庫傳輸的資料
    AWS-Elastic Container Registry ECR使用
  • 對于從公有存儲庫傳輸的資料
    AWS-Elastic Container Registry ECR使用

使用

在控制台上操作

  1. 建立存儲庫
    AWS-Elastic Container Registry ECR使用
    點選入門
  2. 建立的時候可以選擇公有或私有的存儲庫
    AWS-Elastic Container Registry ECR使用
    AWS-Elastic Container Registry ECR使用
    這一步可以直接上傳檔案,也可以通過docker push上傳。
  3. 建一個私有存儲庫
    AWS-Elastic Container Registry ECR使用
  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. 檢查基本設定

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

praqma/network-multitool latest 293c239dd855 3 months ago 38.1MB

  1. 身份驗證

[[email protected] ~]# 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

[[email protected] ~]# docker tag praqma/network-multitool:latest 0982420002.dkr.ecr.ap-southeast-1.amazonaws.com/network-multitool:latest

[[email protected] ~]# 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

[[email protected] ~]# **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. 在控制台檢查
    AWS-Elastic Container Registry ECR使用

用戶端下載下傳

  1. 複制URL
    AWS-Elastic Container Registry ECR使用
  2. 在用戶端pull

[[email protected] ~]# 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

成功

公有存儲庫上傳的流程一樣,下載下傳不用做身份驗證。

繼續閱讀