

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Lightsail 中创建和管理容器服务部署
<a name="amazon-lightsail-container-services-deployments"></a>

当您准备好在 Amazon Lightsail 容器服务上启动容器时，便可以创建部署。部署是您希望在服务上启动的一组容器规范。容器服务一次可以运行一个部署，一个部署最多可以有 10 个容器条目。您可以在创建容器服务的同时创建部署，也可以在服务启动并运行后创建部署。

**注意**  
如果创建新部署，则容器服务的现有利用率指标将消失，并且仅显示当前新部署的指标。

有关容器服务的更多信息，请参阅 [Amazon Lightsail 中的容器服务](amazon-lightsail-container-services.md)。

**内容**
+ [先决条件](#creating-container-deployments-prerequisites)
+ [部署参数](#creating-container-deployments-parameters)
  + [容器条目参数](#creating-deployments-container-entry)
  + [公有终端节点参数](#creating-deployments-public-endpoint)
+ [容器之间的通信](#communication-between-containers)
+ [容器日志](#creating-deployments-container-logs)
+ [部署版本](#creating-deployments-versions)
+ [部署状态](#creating-deployment-status)
+ [部署失败](#creating-deployment-failures)
+ [查看当前的容器服务部署](#view-container-service-deployment)
+ [创建或修改容器服务部署](#creating-container-service-deployment)

## 先决条件
<a name="creating-container-deployments-prerequisites"></a>

在开始在容器服务中创建部署之前，请完成以下先决条件：
+ 在您的 Lightsail 账户中创建容器服务。有关更多信息，请参阅[创建 Amazon Lightsail 容器服务](amazon-lightsail-creating-container-services.md)。
+ 确定在容器服务上启动容器时要使用的容器镜像。
  + 在 Amazon ECR Public Gallery 等公有注册表中查找容器映像。有关更多信息，请参阅《Amazon ECR Public User Guide**》中的 [Amazon ECR Public Gallery](https://gallery.ecr.aws/)。
  + 在本地计算机上创建容器镜像，然后将其推送到 Lightsail 容器服务。有关更多信息，请参阅以下指南：
    + [安装软件来管理您的 Amazon Lightsail 容器服务的容器镜像](amazon-lightsail-install-software.md)
    + [创建容器服务映像](amazon-lightsail-creating-container-images.md)
    + [推送和管理容器映像](amazon-lightsail-pushing-container-images.md)

## 部署参数
<a name="creating-container-deployments-parameters"></a>

本节介绍可以为部署的容器条目和公有终端节点指定的参数。

### 容器条目参数
<a name="creating-deployments-container-entry"></a>

您最多可以在部署中添加 10 个容器条目。每个容器条目都具有可供您指定的以下参数：

![在 Lightsail 控制台中对容器服务进行部署配置](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/container-service-deployment-config.png)

+ **容器名称** – 输入容器的名称。部署中的所有容器都必须具有唯一的名称，并且只能包含字母数字字符和连字符。连字符可以分隔字词，但不能位于名称的开头或结尾。
+ **源镜像** — 指定容器的源容器镜像。可从以下源指定容器镜像：
  + 公有注册表，如 Amazon ECR Public Gallery 或其他一些公有容器映像注册表。

    有关 Amazon ECR Public 的更多信息，请参阅《Amazon ECR Public User Guide**》中的 [What Is Amazon Elastic Container Registry Public?](https://docs.aws.amazon.com/AmazonECR/latest/public/what-is-ecr.html)。
  + 从本地机器推送到容器服务的镜像。要指定已存储的镜像，请选择 **Choose stored image**（选择已存储的镜像），然后选择您要使用的镜像。

    如果在本地计算机上创建容器镜像，则可以将它们推送到容器服务，以便在创建部署时使用它们。有关更多信息，请参阅[创建 Amazon Lightsail 容器服务的容器镜像](amazon-lightsail-creating-container-images.md)和[推送和管理 Amazon Lightsail 容器服务的容器镜像](amazon-lightsail-pushing-container-images.md)。
+ **启动命令**— 指定一个启动命令以运行创建用于配置容器 shell 脚本或 bash 脚本。启动命令可以执行下列操作：添加软件、更新软件或以其他方式配置容器。
+ **环境变量**：指定环境变量，这些变量是键值参数，用于提供容器运行的应用程序或脚本的动态配置。
+ **打开端口**— 指定要在容器上打开的端口和协议。您可以指定通过 HTTP、HTTPS、TCP 和 UDP 打开任何端口。必须为计划用作容器服务公有终端节点的容器打开 HTTP 或 HTTPS 端口。有关更多信息，请参阅本指南的以下部分。

### 公有终端节点参数
<a name="creating-deployments-public-endpoint"></a>

您可以在部署中指定将用作容器服务公有终端节点的容器条目。公有终端节点容器上的应用程序可通过随机生成的容器服务默认域在互联网上公开访问。默认域的格式为`https://{{<ServiceName>}}.{{<RandomGUID>}}.{{<AWSRegion>}}.cs.amazonlightsail.com`，其中{{<ServiceName>}}是您的容器服务的名称，{{<RandomGUID>}}是您的 Lightsail 账户在 AWS 区域中随机生成的容器服务的全球唯一标识符，{{<AWSRegion>}}也是创建容器服务的 AWS 区域。Lightsail 容器服务的公共端点仅支持 HTTPS，不支持 TCP 或 UDP 流量。只有一个容器可作为服务的公有端点。因此，请确保选择托管应用程序前端的容器作为公有端点，而其余容器则可以内部访问。

**注意**  
您可以将自己的自定义域名用于容器服务。有关更多信息，请参阅[启用和管理 Amazon Lightsail 容器服务的自定义域](amazon-lightsail-enabling-container-services-custom-domains.md)。

部署和容器服务的公有终端节点具有以下可以指定的参数：

![Lightsail 控制台中容器服务的公共端点](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/container-service-deployment-public-endpoint-config.png)

+ **端点容器** — 在部署中选择将用作容器服务的公有终端节点的容器名称。只有在部署中打开了 HTTP 或 HTTPS 端口的容器才会在下拉菜单中列出。
+ **端口** — 选择要用于公有终端节点的 HTTP 或 HTTPS 端口。下拉菜单中仅列出在所选容器上打开的 HTTP 和 HTTPS 端口。如果首次启动时所选容器没有为支持 HTTPS 连接进行配置，请选择 HTTP 端口。
**注意**  
默认情况下，容器服务的默认域使用 HTTPS，即使您选择 HTTP 端口作为公有终端节点端口。这是因为默认情况下，容器服务的负载均衡器会配置为 HTTPS，但它将使用 HTTP 建立与容器的连接。  
容器服务的负载均衡器使用 HTTP 连接到容器，但使用 HTTPS 向用户提供内容。
+ **运行状况检查路径** — 在所选的公有终端节点容器上指定一个路径，容器服务的负载均衡器将定期进行检查以确保其正常运行。
+ **高级运行状况检查设置** – 您可以为选定的公有终端节点容器配置以下运行状况检查设置：
  + **运行状况检查超时（秒）** - 等待响应的时长（以秒为单位）。如果在此期间内没有收到任何回复，则运行状况检查将失败。可以指定 2-60 秒。
  + **运行状况检查间隔（秒）** - 容器的运行状况检查之间的大约间隔（以秒为单位）。可以指定 5-300 秒。
  + **运行状况检查成功代码**：检查容器是否成功响应时使用的 HTTP代码。您可以指定介于 200 和 499 之间的值。您可以指定多个值（例如，200,202）或一系列值（例如，200–299）。
  + **运行状况检查正常阈值**：将容器移至“正常”状态之前需要的运行状况检查连续成功次数。
  + **运行状况检查不正常阈值**：将容器移至“不正常”状态之前需要的运行状况检查连续失败次数。

**私有域**

所有容器服务还有一个私有域，其格式为`{{<ServiceName>}}.service.local`，其中{{<ServiceName>}}是您的容器服务的名称。使用私有域可以从与您的服务位于同一亚马逊云科技区域的另一个 Lightsail 资源访问您的容器服务。如果您没有在服务部署中指定公有端点，则私有域是访问您的容器服务的唯一方式。即使您没有指定公有端点，也会为您的容器服务生成默认域，但会在您尝试浏览它时显示 `404 No Such Service` 错误消息。

要使用容器服务的私有域访问特定容器，必须指定接受连接请求的容器开放端口。为此，您可以将请求的域格式化为`{{<ServiceName>}}.service.local:{{<PortNumber>}}`，其中{{<ServiceName>}}是您的容器服务的名称，{{<PortNumber>}}也是您要连接的容器的开放端口。例如，如果您在名为 `container-service-1` 的容器服务上创建一个部署，并指定具有开放端口 `6379` 的 Redis 容器，那么您请求的域应使用格式 `{{container-service-1}}.service.local:{{6379}}`。

## 容器之间的通信
<a name="communication-between-containers"></a>

使用环境变量，您可以打开同一容器服务中的容器之间、不同容器服务中的容器之间或容器与其他资源之间（例如，容器和托管式数据库之间）之间的通信。

要打开同一容器服务内容器之间的通信，请为引用了 `localhost` 的容器部署添加环境变量，如以下示例所示。

![在 Lightsail 控制台中使用本地主机环境变量进行容器部署](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/amazon-lightsail-container-service-environment-variable-localhost.png)


要打开不同容器服务中容器之间的通信，请为引用了其他容器服务的私有域（例如 `container-service-1.service.local`）的容器部署添加环境变量，如以下示例所示。

![在 Lightsail 控制台中使用私有域环境变量的容器部署](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/amazon-lightsail-container-service-environment-variable-private-domain.png)


要打开容器与其他资源之间的通信，请为引用了资源的公有端点 URL 的容器部署添加环境变量。例如，Lightsail 托管数据库的公共端点通常是。`ls-123abc.czoexamplezqi.us-west-2.rds.amazonaws.com`因此，您应该在环境变量中引用这一内容，如以下示例所示。

![在 Lightsail 控制台中使用资源公共端点 URL 环境变量的容器部署](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/amazon-lightsail-container-service-environment-variable-service.png)


## 容器日志
<a name="creating-deployments-container-logs"></a>

部署中的每个容器都会生成日志。容器日志提供容器内运行的 *stdout* 和 *stderr* 进程流。定期访问容器的日志以诊断其运行情况。有关更多信息，请参阅[查看 Amazon Lightsail 容器服务的容器日志](amazon-lightsail-viewing-container-service-container-logs.md)。

## 部署版本
<a name="creating-deployments-versions"></a>

您在容器服务中创建的每个部署都会保存为一个部署版本。如果修改现有部署的参数，则会将容器重新部署到您的服务中，并且修改后的部署将生成一个新的部署版本。将保存每个容器服务最近的 50 个部署版本。您可以使用 50 个部署版本中的任何一个在同一容器服务中创建新部署。有关更多信息，请参阅[查看和管理 Amazon Lightsail 容器服务的部署版本](amazon-lightsail-container-services-deployment-versions.md)。

## 部署状态
<a name="creating-deployment-status"></a>

在创建部署后，您的部署可能处于下列状态之一：
+ **正在激活** — 正在激活部署并正在创建容器。
+ **活动** — 部署已成功创建，并且它当前正在容器服务中运行。
+ **非活动** — 您之前成功创建的部署已不在容器上运行。
+ **失败** — 部署失败，因为部署中指定的一个或多个容器无法启动。

## 部署失败
<a name="creating-deployment-failures"></a>

如果部署中的一个或多个容器无法启动，部署将失败。如果部署失败，并且容器服务中正在运行之前的部署，则容器服务会将之前的部署保留为活动部署。如果没有之前的部署，则容器服务将保持就绪状态，且当前没有活动状态的部署。

查看失败部署的容器日志，以诊断出现的问题并进行故障排除。有关更多信息，请参阅[查看 Amazon Lightsail 容器服务的容器日志](amazon-lightsail-viewing-container-service-container-logs.md)。

## 查看当前的容器服务部署
<a name="view-container-service-deployment"></a>

完成以下步骤以查看 Lightsail 容器服务上的当前部署。

1. 登录 [Lightsail 控制台](https://lightsail.aws.amazon.com/)。

1. 在左侧导航窗格中，选择**容器**。

1. 选择要查看其当前部署的容器服务的名称。

1. 在容器服务管理页面中，选择**部署**选项卡。

   **部署**页面列出了您当前的部署和部署版本。如果您尚未在容器服务中创建部署，则页面的这两个部分将为空白。

## 创建或修改容器服务部署
<a name="creating-container-service-deployment"></a>

完成以下步骤以在 Lightsail 容器服务中创建或修改部署。无论是创建新部署还是修改现有部署，容器服务都会将每个部署保存为新部署版本。有关更多信息，请参阅[查看和管理 Amazon Lightsail 容器服务的部署版本](amazon-lightsail-container-services-deployment-versions.md)。

1. 登录 [Lightsail 控制台](https://lightsail.aws.amazon.com/)。

1. 在左侧导航窗格中，选择**容器**。

1. 选择要为其创建或修改容器服务部署的容器服务的名称。

1. 在容器服务管理页面中，选择部署选项卡。

   **部署**页面列出了您当前的部署和部署版本（如有）。

1. 请选择以下选项之一：
   + 如果容器服务具有现有部署，请选择**修改部署**。
   + 如果容器服务还没有部署，请选择**创建部署**。

     此时将打开部署表单，您可以在其中编辑现有部署参数，或者输入新的部署参数。  
![Lightsail 控制台中的容器服务部署表单](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/container-service-deployment-form.png)

1. 输入部署的参数。有关可指定的部署参数的更多信息，请参阅本指南中之前的[部署参数](#creating-container-deployments-parameters)部分。

1. 选择**添加容器条目**以将多个容器条目添加到您的部署。部署中最多可拥有 10 个容器条目。

1. 选择将用作公有终端节点容器服务的部署的容器条目。这包括指定 HTTP 或 HTTPS 端口、所选容器条目上的运行状况检查路径以及高级运行状况检查设置。有关更多信息，请参阅本指南前面的[公有终端节点参数](#creating-deployments-public-endpoint)。

1. 在输入部署参数后，选择**保存并部署**以在容器服务中创建部署。

   创建部署时，容器服务的状态将变为**正在部署**。几分钟后，根据部署的状态，容器服务的状态将变为以下状态之一：
   + 如果部署成功，容器服务的状态将变为**正在运行**，并且部署的状态将变为**活动**。如果您在部署中配置了公有终端节点，则可以通过容器服务的默认域选择使用公有端点的容器。
   + 如果部署失败，并且容器服务中正在运行之前的部署，则容器服务的状态将变为**正在运行**，且容器服务会将之前的部署保留为活动部署。如果没有之前的部署，则容器服务的状态将变为**就绪**，且当前没有活动状态的部署。查看失败部署的容器日志，以诊断出现的问题并进行故障排除。有关更多信息，请参阅查看 Amazon Lightsail 容器服务的容器日志。

**Topics**
+ [先决条件](#creating-container-deployments-prerequisites)
+ [部署参数](#creating-container-deployments-parameters)
+ [容器之间的通信](#communication-between-containers)
+ [容器日志](#creating-deployments-container-logs)
+ [部署版本](#creating-deployments-versions)
+ [部署状态](#creating-deployment-status)
+ [部署失败](#creating-deployment-failures)
+ [查看当前的容器服务部署](#view-container-service-deployment)
+ [创建或修改容器服务部署](#creating-container-service-deployment)
+ [更改容器容量](amazon-lightsail-changing-container-service-capacity.md)
+ [管理部署版本](amazon-lightsail-container-services-deployment-versions.md)
+ [查看容器日志](amazon-lightsail-viewing-container-service-container-logs.md)