本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 VS 代碼中使用亞馬遜彈性容器註冊表服務
您可以直接從 Amazon Elastic Container Registry (Amazon ECR) 服務AWSVS 代碼中的資源管理器並使用它將程序映像推送到 Amazon ECR 存儲庫。若要開始使用,您需要執行下列步驟:
-
創建一個 Docker 文件,其中包含構建映像所需的信息。
-
從該 Docker 文件構建圖像並標記圖像以進行處理。
-
在您的 Amazon ECR 執行個體內建立儲存庫。
-
將標記映像推送到您的儲存庫。
先決條件
您必須符合下列條件,才能使用 Toolkit for VS Code 的 Amazon ECR 服務功能先決條件。
1. 建立 Dockerfile
Docker 使用一個名為 Dockerfile 的文件來定義可以推送和存儲在遠程存儲庫上的圖像。在您可以將圖像上傳到 ECR 存儲庫之前,您必須創建一個 Docker 文件,然後從該 Docker 文件構建圖像。
建立 Dockerfile
-
使用 VS Code Explorer 的工具組,導覽至您要儲存 Dockerfile 的目錄。
-
建立名為的新檔案Dockerfile。
注意
VS Code 可能會提示您選擇文件類型或文件擴展名。如果發生此問題,請選取純文字。Vs 代碼有一個「碼頭文件」擴展名。但是,我們建議您不要使用它。這是因為擴充功能可能會導致與特定版本的 Docker 或其他相關應用程式發生衝突。
使用 VS 代碼編輯您的碼頭文件
如果 Dockerfile 有副檔名,請開啟該檔案的內容 (按一下右鍵) 選單,並移除副檔名。
從 Docker 文件中刪除文件擴展名後:
-
直接在 VS 代碼中打開空的碼頭文件。
-
將以下示例的內容複製到您的 Docker 文件中:
範例 Dockerfile 映像範例
FROM ubuntu:18.04 # Install dependencies RUN apt-get update && \ apt-get -y install apache2 # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh
這是使用 Ubuntu 18.04 映像的 Dockerfile。所以此跑指示會更新套件快取。安裝 Web 伺服器的軟體套件服務,然後寫入「Hello World!」 內容至 Web 伺服器的根目錄。所以此揭露指令公開容器上的連接埠 80,並且命令提示字元指令啟動 Web 伺服器。
-
儲存 Dockerfile。
重要
確保您的 Docker 文件沒有附加到該名稱的擴展名。具有擴展名的 Docker 文件可能會導致與 Docker 或其他相關應用程序的某些版本發生衝突。
2. 從 Dockerfile 建置映像
您創建的 Docker 文件包含構建程序圖像所需的信息。您必須先建立映像檔,才能將該映像推送到 Amazon ECR 執行個體。
從 Dockerfile 建置映像
-
使用 Docker CLI 或與您的 Docker 執行個體整合的 CLI,瀏覽至包含 Docker 檔案的目錄。
-
執行碼頭構建命令來構建 Docker 文件中定義的圖像。
docker build -t hello-world .
-
執行Docker 影像指令,驗證映像已正確建立。
docker images --filter reference=hello-world
範例 輸範例:
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
-
注意
此步驟不是建立或推送映像檔的必要步驟,但是您可以看到程式映像檔在執行時的運作方式。
執行新建置的映像,請使用Docker 執行指令。
docker run -t -i -p 80:80 hello-world
所以此-p在前面的示例中指定的選項映射公開連接埠 80在容器上連接埠 80的主機系統。如果您在本地運行 Docker,請導航到http://localhost:80
使用您的 Web 瀏覽器。如果程序正確執行,「Hello World!」 顯示語句。 如需有關的詳細資訊Docker 執行指令,請參閱Docker 執行參考
在 Docker 網站上。
3. 建立新的儲存器
若要將映像上傳到 Amazon ECR 執行個體,請建立可存放於其中的新儲存庫。
建立新的 Amazon ECR 儲存庫
-
來自 VS 代碼Docker/,選擇AWS工具組圖示。
-
展開 AWS探險者Menu 選單。
-
找到預設值AWS與您相關聯的區域AWS帳戶。然後,選擇它以查看通過 Toolkit for VS Code 服務列表。
-
選擇ECR +選項以開始建立新的儲存器程序。
-
遵循提示內容完成程序。
-
完成後,您可以從ECR的 區段AWSExplorer 選單。
4. 推送、提取和刪除映像
從 Docker 檔案建立映像並建立儲存庫之後,您可以將映像推送到 Amazon ECR 儲存庫。此外,使用AWS資源管理器與碼頭和AWSCLI,您可以執行下列操作:
-
從您的儲存庫中提取映像。
-
刪除儲存在儲存庫中的映像檔。
-
刪除您的存放庫。
使用默認註冊表對 Docker 進行身份驗證
在 Amazon ECR 和 Docker 執行個體之間交換資料時,需要進行身份驗證。要使用您的註冊表驗證 Docker:
-
開啟連接至執行個體的命令列作業系統AWSCLI。
-
使用get-login-password向您的私人 ECR 註冊表進行身份驗證的方法。
aws ecr get-login-password --region
region
| docker login --username AWS --password-stdinAWS_account_id
.dkr.ecr.region
.amazonaws.com重要
在上述命令中,您必須同時更新
region
與AWS_account_id
的特定於您的信息AWS帳戶。
標記映像並推送映像至您的儲存庫
使用您的實例對 Docker 進行身份驗證後AWS,將映像推送到您的儲存庫。
-
使用Docker 影像指令可檢視儲存在本機的影像,並識別您要標記的影像。
docker images
範例 輸範例:
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
-
使用標記您的圖像Docker 標籤指令。
docker tag hello-world:latest
AWS_account_id
.dkr.ecr.region
.amazonaws.com/hello-world:latest -
將已標記的映像推送到您的儲存庫中Docker 標籤指令。
docker push
AWS_account_id
.dkr.ecr.region
.amazonaws.com/hello-world:latest範例 輸範例:
The push refers to a repository [
AWS_account_id
.dkr.ecr.region
.amazonaws.com/hello-world] (len: 1) e9ae3c220b23: Pushed a6785352b25c: Pushed 0998bf8fb9e9: Pushed 0a85502c06c9: Pushed latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
將標記的影像成功上傳至儲存庫之後,就會顯示在AWSExplorer 選單。
從 Amazon ECR 提取映像
-
您可以將映像檔拉到您的本機執行個體Docker 標籤指令。
docker pull
AWS_account_id
.dkr.ecr.region
.amazonaws.com/hello-world:latest範例 輸範例:
The push refers to a repository [
AWS_account_id
.dkr.ecr.region
.amazonaws.com/hello-world] (len: 1) e9ae3c220b23: Pushed a6785352b25c: Pushed 0998bf8fb9e9: Pushed 0a85502c06c9: Pushed latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
從 Amazon ECR 儲存庫中刪除映像
從 VS Code 中刪除映像的方法有兩種。第一種方法是使用AWSExplorer。
-
從AWS資源管理器中,展開ECR菜單
-
展開您要從中刪除影像的儲存庫
-
通過打開右鍵菜單,選擇與要刪除的圖像關聯的圖像標籤(右鍵單擊)
-
選擇刪除標籤...選項刪除與該標籤關聯的所有存儲圖像
刪除映像AWSCLI
-
您也可以使用AWSecr batch-delete-image指令。
AWS ecr batch-delete-image \ --repository-name
hello-world
\ --image-ids imageTag=latest範例 輸範例:
{ "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
從您的亞馬遜 ECR 執行個體刪除儲存庫
從 VS Code 中刪除儲存庫的方法有兩種。第一種方法是使用AWSExplorer。
-
從AWS資源管理器中,展開ECR菜單
-
開啟內容 (按一下滑鼠右鍵) 選單,選擇您要刪除的儲存庫
-
選擇刪除儲存庫...選擇的儲存庫
從刪除 Amazon ECR 儲存庫AWSCLI
-
您可以使用AWSecr 刪除存儲庫指令。
注意
依預設,您不能刪除包含映像的儲存庫。但是,--force標誌允許這個。
AWS ecr delete-repository \ --repository-name
hello-world
\ --force範例 輸範例:
{ "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }