

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

# 在 CloudShell 內建置 Docker 容器，並將其推送至 Amazon ECR 儲存庫
<a name="tutorial-docker-cli"></a>

本教學課程說明如何在 中定義和建置 Docker 容器， AWS CloudShell 並將其推送至 Amazon ECR 儲存庫。

## 先決條件
<a name="prerequisites-docker-cli"></a>
+ 您必須擁有必要的許可，才能建立並推送至 Amazon ECR 儲存庫。如需使用 Amazon ECR 儲存庫的詳細資訊，請參閱《[Amazon ECR 使用者指南》中的 Amazon ECR 私有儲存庫](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html)。 **如需使用 Amazon ECR 推送映像所需的許可的詳細資訊，請參閱《*Amazon ECR 使用者指南*》中的[推送映像所需的 IAM 許可](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-push.html#image-push-iam)。

## 教學課程程序
<a name="tutorial-docker-cli-steps"></a>

下列教學課程概述如何使用 CloudShell 介面建置 Docker 容器，並將其推送至 Amazon ECR 儲存庫。

1. 在主目錄中建立新的資料夾。

   ```
   mkdir ~/docker-cli-tutorial
   ```

1. 導覽至您建立的資料夾。

   ```
   cd ~/docker-cli-tutorial
   ```

1. 建立空的 Dockerfile。

   ```
   touch Dockerfile
   ```

1. 使用文字編輯器，例如 `nano Dockerfile`，開啟 檔案並將下列內容貼到其中。

   ```
   # Dockerfile
   
   # Base this container on the latest Amazon Linux version
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   
   # Install the cowsay binary
   RUN dnf install --assumeyes cowsay
   
   # Default entrypoint binary
   ENTRYPOINT [ "cowsay" ]
   
   # Default argument for the cowsay entrypoint
   CMD [ "Hello, World!" ]
   ```

1. Dockerfile 現在已準備好建置。透過執行 來建置容器`docker build`。使用easy-to-type的名稱標記容器，以供未來命令使用。

   ```
   docker build --tag test-container .
   ```

   請務必包含結尾期間 (`.`)。  
![\[在 中執行 docker build 命令的影像 AWS CloudShell。\]](http://docs.aws.amazon.com/zh_tw/cloudshell/latest/userguide/images/docker-cli-tutorial%20-%201-docker-build.png)

1. 您現在可以測試容器，以檢查其是否正確執行 AWS CloudShell。

   ```
   docker container run test-container
   ```  
![\[內部 docker 容器執行命令的影像 AWS CloudShell\]](http://docs.aws.amazon.com/zh_tw/cloudshell/latest/userguide/images/docker-cli-tutorial%20-%202-docker-run.png)

1. 現在您已擁有正常運作的 Docker 容器，您需要將其推送至 Amazon ECR 儲存庫。如果您有現有的 Amazon ECR 儲存庫，您可以略過此步驟。

   執行下列命令來建立本教學課程的 Amazon ECR 儲存庫。

   ```
   ECR_REPO_NAME=docker-tutorial-repo
   aws ecr create-repository --repository-name ${ECR_REPO_NAME}
   ```  
![\[用於在 內建立 Amazon ECR 儲存庫的命令影像 AWS CloudShell\]](http://docs.aws.amazon.com/zh_tw/cloudshell/latest/userguide/images/docker-cli-tutorial%20-%203-ecr-create-repo%20(redacted).png)

1. 建立 Amazon ECR 儲存庫之後，您可以將 Docker 容器推送到該儲存庫。

   執行下列命令以取得 Docker 的 Amazon ECR 登入憑證。

   ```
   AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text)
   ECR_URL=${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com
   aws ecr get-login-password | docker login --username AWS --password-stdin ${ECR_URL}
   ```  
![\[用來取得 Docker 之 Amazon ECR 登入憑證的命令影像。\]](http://docs.aws.amazon.com/zh_tw/cloudshell/latest/userguide/images/docker-cli-tutorial%20-%204-docker-login.png)
**注意**  
如果未在 CloudShell 中設定**AWS\$1REGION**環境變數，或您想要與其他 中的資源互動 AWS 區域，請執行下列命令：  

   ```
   AWS_REGION=<your-desired-region>
   ```

1. 使用目標 Amazon ECR 儲存庫標記映像，然後將其推送至該儲存庫。

   ```
   docker tag test-container ${ECR_URL}/${ECR_REPO_NAME}
   docker push ${ECR_URL}/${ECR_REPO_NAME}
   ```  
![\[用於使用目標 Amazon ECR 儲存庫標記映像的命令映像。\]](http://docs.aws.amazon.com/zh_tw/cloudshell/latest/userguide/images/docker-cli-tutorial%20-%205-docker-push%20(redacted).png)

   如果您在嘗試完成本教學課程時遇到錯誤或遇到問題，請參閱本指南的[故障診斷](https://docs.aws.amazon.com/cloudshell/latest/userguide/troubleshooting.html)一節以取得協助。

## 清除
<a name="clean-up-docker-cli"></a>

您現在已成功將 Docker 容器部署至 Amazon ECR 儲存庫。若要從 AWS CloudShell 環境中移除您在本教學課程中建立的檔案，請執行下列命令。
+ 

  ```
  cd ~
  rm -rf ~/docker-cli-tutorial
  ```
+ 刪除 Amazon ECR 儲存庫。

  ```
  aws ecr delete-repository --force --repository-name ${ECR_REPO_NAME}
  ```