簡介
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指令可以從該鏡像倉庫中的存儲庫中推送和拉取鏡像。具體請參閱 私有系統資料庫驗證
- 檢查基本設定
[[email protected] ~]# 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
[[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
- 身份驗證
[[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
- 為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
- 上傳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
- 在控制台檢查
用戶端下載下傳
- 複制URL
- 在用戶端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
成功
公有存儲庫上傳的流程一樣,下載下傳不用做身份驗證。