

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

# 建置和測試Lightsail容器服務的 Docker 映像
<a name="amazon-lightsail-creating-container-images"></a>

透過 Docker，您可以建置、執行、測試和部署以容器為基礎的分散式應用程式。 Amazon Lightsail容器服務會在部署中使用 Docker 容器映像來啟動容器。

在本指南中，我們會為您介紹如何使用 Dockerfile 在本機電腦上建立容器映像。建立映像後，便可將其推送到 Lightsail 容器服務進行部署。

若要完成本指南中的程序，您應該對 Docker 及其運作方式有基本認識。如需有關 Docker 的詳細資訊，請參閱[什麼是 Docker？](https://aws.amazon.com/docker/)和 [Docker 概觀](https://docs.docker.com/get-started/overview/)。

**內容**
+ [步驟 1：完成先決條件](#create-container-image-prerequisite)
+ [步驟 2：建立 Dockerfile 並建置容器映像](#create-container-image-create-dockerfile)
+ [步驟 3：執行新的容器映像](#create-container-image-run-container)
+ [(選用) 步驟 4：清理在本機電腦上執行的容器](#create-container-image-cleanup)
+ [建立容器映像後的後續步驟](#create-container-image-next-steps)

## 步驟 1：完成先決條件
<a name="create-container-image-prerequisite"></a>

開始之前，必須安裝所需軟體來建立容器，然後將其推送到 Lightsail 容器服務。例如，必須安裝並使用 Docker 來建立和建置容器映像，以用於 Lightsail 容器服務。如需詳細資訊，請參閱[安裝軟體以管理 Amazon Lightsail 容器服務的容器映像](amazon-lightsail-install-software.md)。

## 步驟 2：建立 Dockerfile 並建置容器映像
<a name="create-container-image-create-dockerfile"></a>

請完成下列程序來建立 Dockerfile，並利用其建置 `mystaticwebsite` Docker 容器映像。容器映像將用於 Ubuntu 上 Apache Web 伺服器所託管的簡單靜態網站。

1. 在您要存放 Dockerfile 的本機電腦上建立 `mystaticwebsite` 資料夾。

1. 在剛建立的資料夾中建立 Dockerfile。

   Dockerfile 不使用副檔名，例如 `.TXT`。完整的檔案名稱為 `Dockerfile`。

1. 根據您設定容器映像的方式，複製下列其中一個程式碼區塊並貼至 Dockerfile：
   + **若要建立具有 Hello World 訊息的簡單靜態網站容器映像**，請複製下列程式碼區塊並貼至 Dockerfile。此程式碼範本使用 Ubuntu 18.04 映像。`RUN` 指令會更新套件快取，以及安裝和設定 Apache，並將 Hello World 訊息寫至 Web 伺服器的文件根目錄。`EXPOSE` 指令會公開容器上的連接埠 80，而 `CMD` 指令會啟動 Web 伺服器。

     ```
     FROM ubuntu:18.04
     
     # Install dependencies
     RUN apt-get update && \
      apt-get -y install apache2
     
     # Write hello world message
     RUN echo 'Hello World!' > /var/www/html/index.html
     
     # Open port 80
     EXPOSE 80
     
     # Start Apache service
     CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
     ```
   + **若要將自己的一組 HTML 檔案用於靜態網站容器映像**，請在存放 Dockerfile 的同一個資料夾中建立 `html` 資料夾。然後將 HTML 檔案放入該資料夾中。

     HTML 檔案位於 `html` 資料夾中之後，請複製以下程式碼區塊並貼至 Dockerfile。此程式碼範本使用 Ubuntu 18.04 映像。`RUN` 指令會更新套件快取，以及安裝和設定 Apache。`COPY` 指令會將 html 資料夾內容複製到 Web 伺服器的文件根目錄。`EXPOSE` 指令會公開容器上的連接埠 80，而 `CMD` 指令會啟動 Web 伺服器。

     ```
     FROM ubuntu:18.04
     
     # Install dependencies
     RUN apt-get update && \
      apt-get -y install apache2
     
     # Copy html directory files
     COPY html /var/www/html/
     
     # Open port 80
     EXPOSE 80
     
     CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
     ```

1. 開啟命令提示或終端機視窗，並將目錄變更為存放 Dockerfile 的資料夾。

1. 輸入下列命令來使用資料夾中的 Dockerfile 建置容器映像。此命令會建置新的 Docker 容器映像，名為 `mystaticwebsite`。

   ```
   docker build -t mystaticwebsite .
   ```

   這時應該會出現確認映像建置成功的訊息。

1. 輸入下列命令來檢視本機電腦上的容器映像。

   ```
   docker images --filter reference=mystaticwebsite
   ```

   這時應該會出現類似以下範例的結果，顯示所建立的新容器映像。  
![Docker 映像命令結果](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/docker-images-command-result.png)

   新建置的容器映像已可進行在本機電腦上執行新容器的測試。前往本指南下一節[步驟 3：執行新的容器映像](#create-container-image-run-container)。

## 步驟 3：執行新的容器映像
<a name="create-container-image-run-container"></a>

請完成以下步驟，以執行您建立的新容器映像。

1. 在命令提示或終端機視窗中，輸入下列命令來執行在本指南上一節[步驟 2：建立 Dockerfile 並建置容器映像](#create-container-image-create-dockerfile)所建置的容器映像。`-p 8080:80` 選項會將容器上的公開連接埠 80 對應至本機電腦上的連接埠 8080。`-d` 選項指定容器應在分離模式下執行。

   ```
   docker container run -d -p 8080:80 --name mystaticwebsite mystaticwebsite:latest
   ```

1. 輸入下列命令來檢視執行中的容器。

   ```
   docker container ls -a
   ```

   這時應該會出現類似以下範例的結果，顯示新的執行中容器。  
![Docker 容器命令結果](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/docker-container-command-result.png)

1. 若要確認容器已處於運作狀態，請開啟新的瀏覽器視窗並瀏覽至 `http://localhost:8080`。這時應該會出現類似以下範例的訊息。此訊息確認容器已在本機電腦上運作。  
![在 Docker 容器上執行的靜態網站](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/container-mystaticsite-hello-world.png)

   新建置的容器映像已可推送到 Lightsail 帳戶，以便您將其部署至 Lightsail 容器服務。如需詳細資訊，請參閱[在 Amazon Lightsail 容器服務上推送和管理容器映像](amazon-lightsail-pushing-container-images.md)。

## (選用) 步驟 4：清理在本機電腦上執行的容器
<a name="create-container-image-cleanup"></a>

現在已建立可推送到 Lightsail 容器服務的容器映像，接著要按本指南所述程序清理本機電腦上執行的容器。

請完成下列步驟，以清理在本機電腦上執行的容器：

1. 執行下列命令來檢視正在本機電腦上執行的容器。

   ```
   docker container ls -a
   ```

   這時應該會出現類似下面的結果，其中列出了在本機電腦上執行之容器的名稱。  
![Docker 容器命令結果](http://docs.aws.amazon.com/zh_tw/lightsail/latest/userguide/images/docker-container-command-result.png)

1. 執行下列命令來移除在本指南先前建立的執行中容器。這樣會強制停用容器，並將其永久刪除。

   ```
   docker container rm <ContainerName> --force
   ```

   將命令中的 <ContainerName> 取代為要停用之容器的名稱，然後進行刪除。

   範例：

   ```
   docker container rm {{mystaticwebsite}} --force
   ```

   本指南所建立的容器現在應已刪除。

## 建立容器映像後的後續步驟
<a name="create-container-image-next-steps"></a>

建立容器映像後，在您準備好進行部署時，將這些映像推送到 Lightsail 容器服務。如需詳細資訊，請參閱[管理 Lightsail 容器服務映像](amazon-lightsail-pushing-container-images.md)。

**Topics**
+ [步驟 1：完成先決條件](#create-container-image-prerequisite)
+ [步驟 2：建立 Dockerfile 並建置容器映像](#create-container-image-create-dockerfile)
+ [步驟 3：執行新的容器映像](#create-container-image-run-container)
+ [(選用) 步驟 4：清理在本機電腦上執行的容器](#create-container-image-cleanup)
+ [建立容器映像後的後續步驟](#create-container-image-next-steps)
+ [管理容器映像](amazon-lightsail-pushing-container-images.md)
+ [安裝容器服務外掛程式](amazon-lightsail-install-software.md)
+ [ECR 私有儲存庫存取](amazon-lightsail-container-service-ecr-private-repo-access.md)