在 VS 代碼中使用亞馬遜彈性容器註冊表服務 - AWS VS 程式碼的工具組

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 VS 代碼中使用亞馬遜彈性容器註冊表服務

您可以直接從 Amazon Elastic Container Registry (Amazon ECR) 服務AWSVS 代碼中的資源管理器並使用它將程序映像推送到 Amazon ECR 存儲庫。若要開始使用,您需要執行下列步驟:

  1. 創建一個 Docker 文件,其中包含構建映像所需的信息。

  2. 從該 Docker 文件構建圖像並標記圖像以進行處理。

  3. 在您的 Amazon ECR 執行個體內建立儲存庫。

  4. 將標記映像推送到您的儲存庫。

先決條件

您必須符合下列條件,才能使用 Toolkit for VS Code 的 Amazon ECR 服務功能先決條件

1. 建立 Dockerfile

Docker 使用一個名為 Dockerfile 的文件來定義可以推送和存儲在遠程存儲庫上的圖像。在您可以將圖像上傳到 ECR 存儲庫之前,您必須創建一個 Docker 文件,然後從該 Docker 文件構建圖像。

建立 Dockerfile
  1. 使用 VS Code Explorer 的工具組,導覽至您要儲存 Dockerfile 的目錄。

  2. 建立名為的新檔案Dockerfile

    注意

    VS Code 可能會提示您選擇文件類型或文件擴展名。如果發生此問題,請選取純文字。Vs 代碼有一個「碼頭文件」擴展名。但是,我們建議您不要使用它。這是因為擴充功能可能會導致與特定版本的 Docker 或其他相關應用程式發生衝突。

使用 VS 代碼編輯您的碼頭文件

如果 Dockerfile 有副檔名,請開啟該檔案的內容 (按一下右鍵) 選單,並移除副檔名。

從 Docker 文件中刪除文件擴展名後:

  1. 直接在 VS 代碼中打開空的碼頭文件。

  2. 將以下示例的內容複製到您的 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 伺服器。

  3. 儲存 Dockerfile。

    重要

    確保您的 Docker 文件沒有附加到該名稱的擴展名。具有擴展名的 Docker 文件可能會導致與 Docker 或其他相關應用程序的某些版本發生衝突。

2. 從 Dockerfile 建置映像

您創建的 Docker 文件包含構建程序圖像所需的信息。您必須先建立映像檔,才能將該映像推送到 Amazon ECR 執行個體。

從 Dockerfile 建置映像
  1. 使用 Docker CLI 或與您的 Docker 執行個體整合的 CLI,瀏覽至包含 Docker 檔案的目錄。

  2. 執行碼頭構建命令來構建 Docker 文件中定義的圖像。

    docker build -t hello-world .
  3. 執行Docker 影像指令,驗證映像已正確建立。

    docker images --filter reference=hello-world
    範例 輸範例:
    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  4. 注意

    此步驟不是建立或推送映像檔的必要步驟,但是您可以看到程式映像檔在執行時的運作方式。

    執行新建置的映像,請使用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 儲存庫
  1. 來自 VS 代碼Docker/,選擇AWS工具組圖示

  2. 展開 AWS探險者Menu 選單。

  3. 找到預設值AWS與您相關聯的區域AWS帳戶。然後,選擇它以查看通過 Toolkit for VS Code 服務列表。

  4. 選擇ECR +選項以開始建立新的儲存器程序。

  5. 遵循提示內容完成程序。

  6. 完成後,您可以從ECR的 區段AWSExplorer 選單。

4. 推送、提取和刪除映像

從 Docker 檔案建立映像並建立儲存庫之後,您可以將映像推送到 Amazon ECR 儲存庫。此外,使用AWS資源管理器與碼頭和AWSCLI,您可以執行下列操作:

  • 從您的儲存庫中提取映像。

  • 刪除儲存在儲存庫中的映像檔。

  • 刪除您的存放庫。

使用默認註冊表對 Docker 進行身份驗證

在 Amazon ECR 和 Docker 執行個體之間交換資料時,需要進行身份驗證。要使用您的註冊表驗證 Docker:

  1. 開啟連接至執行個體的命令列作業系統AWSCLI。

  2. 使用get-login-password向您的私人 ECR 註冊表進行身份驗證的方法。

    aws ecr get-login-password --region region | docker login --username AWS --password-stdin AWS_account_id.dkr.ecr.region.amazonaws.com
    重要

    在上述命令中,您必須同時更新regionAWS_account_id的特定於您的信息AWS帳戶。

標記映像並推送映像至您的儲存庫

使用您的實例對 Docker 進行身份驗證後AWS,將映像推送到您的儲存庫。

  1. 使用Docker 影像指令可檢視儲存在本機的影像,並識別您要標記的影像。

    docker images
    範例 輸範例:
    REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
  2. 使用標記您的圖像Docker 標籤指令。

    docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  3. 將已標記的映像推送到您的儲存庫中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。

  1. 從AWS資源管理器中,展開ECR菜單

  2. 展開您要從中刪除影像的儲存庫

  3. 通過打開右鍵菜單,選擇與要刪除的圖像關聯的圖像標籤(右鍵單擊)

  4. 選擇刪除標籤...選項刪除與該標籤關聯的所有存儲圖像

刪除映像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。

  1. 從AWS資源管理器中,展開ECR菜單

  2. 開啟內容 (按一下滑鼠右鍵) 選單,選擇您要刪除的儲存庫

  3. 選擇刪除儲存庫...選擇的儲存庫

從刪除 Amazon ECR 儲存庫AWSCLI
  • 您可以使用AWSecr 刪除存儲庫指令。

    注意

    依預設,您不能刪除包含映像的儲存庫。但是,--force標誌允許這個。

    AWS ecr delete-repository \ --repository-name hello-world \ --force
    範例 輸範例:
    { "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }