

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

# 在 Amazon Lightsail 上部署和管理容器
<a name="amazon-lightsail-container-services"></a>

Amazon Lightsail 容器服务是一种高度可扩展的计算和联网资源，您可以在其中部署、运行和管理容器。容器是将代码和依赖关系打包在一起的软件标准单位，这样应用程序就可以从一个计算环境快速可靠地转到另一个计算环境运行。

您可以将 Lightsail 容器服务视为一种计算环境，它允许您使用在本地计算机上创建并推送到服务的映像，或来自在线存储库（例如 Amazon ECR 公共画廊）的图像，在 AWS 基础设施上运行容器。

您还可以通过安装诸如 Docker 之类的软件，在本地计算机上本地运行容器。Amazon Elastic Container Service（Amazon ECS）和 Amazon Elastic Compute Cloud（Amazon EC2）是您可以在其上运行容器的 AWS 基础设施中的其他资源。有关更多信息，请参阅 [Amazon ECS 开发人员指南](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)。

**内容**
+ [容器](#understanding-containers)
+ [Lightsail 容器服务元素](#understanding-lightsail-container-services)
  + [Lightsail 容器服务](#lightsail-container-services)
  + [容器服务容量（规模和功率）](#container-services-capacity)
  + [定价](#container-services-pricing)
  + [部署](#container-services-deployments)
  + [部署版本](#container-services-deployment-versions)
  + [容器镜像源](#container-services-image-sources)
  + [容器服务 ARN](#container-services-arn)
  + [公有端点和默认域](#container-services-endpoints-domains)
  + [自定义域名和 SSL/TLS 证书](#container-services-custom-domains-certificates)
  + [容器日志](#container-services-container-logs)
  + [Metrics](#container-services-metrics)
+ [使用 Lightsail 容器服务](#using-lightsail-container-services)

## 容器
<a name="understanding-containers"></a>

容器是将代码和依赖关系打包在一起的软件标准单位，这样应用程序就可以从一个计算环境快速可靠地转到另一个计算环境运行。您可以在开发环境中运行容器，将其部署到预生产环境中，然后将其部署到生产环境中。无论您的开发环境是本地机器、预生产环境是数据中心中的物理服务器，抑或您的生产环境是云端的虚拟私有服务器，您的容器都可以可靠地运行。

容器镜像是一种轻型、独立、可执行的软件包，其中包括运行应用程序所需的一切：代码、运行时、系统工具、系统库和设置。容器镜像在运行时成为容器。通过对应用程序及其依赖关系进行容器化，您不再需要担心软件是否在部署软件的操作系统和基础设施中正确运行 — 这样就可以腾出更多的时间来关注代码本身。

有关容器和容器镜像的更多信息，请参阅中的 *Docker 文档*中的[什么是容器？](https://www.docker.com/resources/what-container)。

## Lightsail 容器服务元素
<a name="understanding-lightsail-container-services"></a>

以下是您在开始使用之前应了解的 Lightsail 容器服务的关键要素。

### Lightsail 容器服务
<a name="lightsail-container-services"></a>

容器服务是 Lightsail 计算资源，你可以在任何可用 Lightsail AWS 区域 的环境中创建该资源。您可以随时创建和删除容器服务。有关更多信息，请参阅[创建 Lightsail 容器服务和删除 Ligh [tsail](amazon-lightsail-deleting-container-services.md) 容器服务](amazon-lightsail-creating-container-services.md)。

![\[Lightsail 容器服务示意图\]](http://docs.aws.amazon.com/zh_cn/lightsail/latest/userguide/images/amazon-lightsail-container-service-diagram.png)


### 容器服务容量（规模和功率）
<a name="container-services-capacity"></a>

首次创建容器服务时，必须选择以下容量参数：
+ **规模** — 要在其中运行容器工作负载的计算节点数。您的容器工作负载会在服务的计算节点间复制。最多可以为容器服务指定 20 个计算节点。可以根据您要为服务提供支持的节点数量来选择规模，以实现更高的可用性和更高的容量。容器的流量将在所有节点之间实现负载平衡。
+ **Power** — 容器服务中每个节点的内存和 v CPUs 。你可以选择的功率有 Nano (Na)、Micro (Mi)、Small (Sm)、Medium (Md)、Large (Lg) 和 Xlarge (Xl)，每种功率都有逐渐增加的内存量和 v CPUs。

如果将容器服务的规模指定为大于 1，则容器工作负载将在服务的多个计算节点间复制。例如，如果您的服务规模为 3，功率为 Nano，则您的容器工作负载有三个副本在三个计算资源上运行，每个副本有 512 MB 的 RAM 和 0.25 v CPUs。 传入流量在这三个资源之间进行负载平衡。您为容器服务指定的容量越大，它能够处理的流量就越多。

如果您发现容器服务配置不够，您可以随时动态增加容器服务的功率和规模，而无需任何停机时间；如果您发现容器服务过度配置，则可以减少容器服务的功率和规模。Lightsail 会自动管理容量变化以及您当前的部署。有关更多信息，请参阅[更改容器服务的容量](amazon-lightsail-changing-container-service-capacity.md)。

### 定价
<a name="container-services-pricing"></a>

容器服务的每月价格是通过将其功率价格乘以其计算节点的数量（您的服务规模）来计算的。例如，中功率（价格为 40 美元）且规模为 3 个计算节点的服务每月的费用将为 120 美元。无论您的容器服务是否启用，以及是否有部署，您都需要为容器服务付费。必须删除您的容器服务才能停止向您收费。

每个容器服务（无论其配置的容量是多少）都包含 500 GB 的月度数据传输配额。无论为服务选择什么功率和规模，数据传输配额都不会改变。超出配额的数据传输到互联网将产生超额费用，费用各不相同，起价为每 AWS 区域 GB 0.09美元。从互联网传入的数据超出配额不会产生超额费用。有关更多信息，请参阅 [Lightsail 定价页](https://aws.amazon.com/lightsail/pricing/)。

### 部署
<a name="container-services-deployments"></a>

您可以在 Lightsail 容器服务中创建部署。部署是您要在服务上启动的容器工作负载的一组规范。

您可以为部署中的每个容器条目指定以下参数：
+ 要启动的容器名称
+ 用于容器的源容器镜像
+ 启动容器时运行的命令
+ 应用于容器的环境变量
+ 要在容器上打开的网络端口
+ 部署中允许通过容器服务的默认域公开访问的容器
**注意**  
对于每个容器服务，一个部署中只能有一个容器可以设为公开访问。

启动部署后，将会对部署的公有中断节点应用以下运行状况检查参数：
+ 执行运行状况检查的目录路径。
+ 高级运行状况检查设置，例如间隔（秒）、超时（秒）、成功代码、运行状况阈值和不正常阈值。

您的容器服务一次可以有一个活动部署，一个部署最多可以有 10 个容器条目。您可以在创建容器服务的同时创建部署，也可以在服务启动并运行后创建部署。有关更多信息，请参阅[创建和管理容器服务的部署](amazon-lightsail-container-services-deployments.md)。

### 部署版本
<a name="container-services-deployment-versions"></a>

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

### 容器镜像源
<a name="container-services-image-sources"></a>

创建部署时，必须为部署中的每个容器条目指定源容器镜像。创建部署后，容器服务将从指定的源中提取镜像，并使用它们来创建容器。

您指定的镜像可以来自以下源：
+ **公有注册表**，如 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)。
+ **从本地机器推送到**容器服务的镜像。如果您在本地计算机上创建容器镜像，则可以将它们推送到容器服务，以便在创建部署时使用它们。有关更多信息，请参阅[创建容器服务映像](amazon-lightsail-creating-container-images.md)和[推送和管理容器映像](amazon-lightsail-pushing-container-images.md)。

Lightsail 容器服务支持基于 Linux 的容器镜像。目前不支持基于 Windows 的容器镜像，但你可以在 Windows 上运行 Docker、 AWS Command Line Interface (AWS CLI) 和 Lightsail Control (lightsailctl) 插件来构建基于 Linux 的镜像并将其推送到你的 Lightsail 容器服务。

### 容器服务 ARN
<a name="container-services-arn"></a>

Amazon 资源名称 (ARNs) 唯一标识 AWS 资源。当您需要在所有资源（例如在 IAM 策略和 API 调用中）中明确指定资源时 AWS，我们需要 ARN。

要获取容器服务的 ARN，请使用 Lightsa `GetContainerServices` il API 操作，并使用参数指定容器服务的名称。`serviceName`您的容器服务 ARN 将在该操作的结果中列出，如下例所示。有关更多信息，请参阅[GetContainerServices](https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetContainerServices.html)《*亚马逊 Lightsail API* 参考》。

可以看到类似以下内容的输出：

```
{
    "containerServices": [
        {
            "containerServiceName": "container-service-1",
            "arn": "arn:aws:lightsail: :111122223333:ContainerService/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "createdAt": "2024-01-01T00:00:00+00:00",
            "location": {
                "availabilityZone": "all",
                "regionName": "us-west-2"
        },
        .....
}
```

### 公有端点和默认域
<a name="container-services-endpoints-domains"></a>

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

您可以使用容器服务的默认域，也可以使用您自己的自定义域（已注册的域名）。有关将自定义域与容器服务结合使用的更多信息，请参阅[启用和管理容器服务的自定义域](amazon-lightsail-enabling-container-services-custom-domains.md)。

**私有域**

所有容器服务还有一个私有域，其格式为`<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`。

### 自定义域名和 SSL/TLS 证书
<a name="container-services-custom-domains-certificates"></a>

您最多可以在容器服务中使用 4 个自定义域，而不使用默认域。例如，您可以将自定义域（例如 `example.com`）的流量引导到部署中标记为公有端点的容器。

要在服务中使用自定义域名，必须先向服务申请SSL/TLS certificate for the domains that you want to use. You must then validate the SSL/TLS certificate by adding a set of CNAME records to the DNS of your domains. After the SSL/TLS certificate is validated, you enable custom domains on your container service by attaching the valid SSL/TLS证书。有关更多信息，请参阅[为您的 Lightsail 容器服务创建 SSL/TLS 证书、验证 Lightsail 容器服务](amazon-lightsail-creating-container-services-certificates.md)[的 SSL/TLS 证书，以及为 Lightsail 容器服务[启用和](amazon-lightsail-enabling-container-services-custom-domains.md)管理 Lightsail 容器](amazon-lightsail-validating-container-services-certificates.md)服务的自定义域。

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

容器服务中的每个容器都会生成一个日志，您可以访问该日志来诊断容器的操作。这些的日志信息包括在容器内运行的 *stdout* 和 *stderr* 进程流。有关更多信息，请参阅[查看容器服务日志](amazon-lightsail-viewing-container-service-container-logs.md)。

### 指标
<a name="container-services-metrics"></a>

监控容器服务的指标，以诊断可能由于过度使用而导致的问题。您还可以对指标进行监控，来帮助您确定服务是配置不足还是过度配置。有关更多信息，请参阅[查看容器服务指标](amazon-lightsail-viewing-container-services-metrics.md)。

## 使用 Lightsail 容器服务
<a name="using-lightsail-container-services"></a>

以下是管理 Lightsail 容器服务以及将映像从本地计算机推送到服务或使用公共注册表中的容器镜像的一般步骤。

**管理 Lightsail 容器服务并在部署中使用容器镜像**

1. 在您的 Lightsail 账户中创建容器服务。有关更多信息，请参阅[创建 Lightsail 容器服务](amazon-lightsail-creating-container-services.md)。

1. 使用以下选项之一将容器镜像与 Lightsail 容器服务配合使用：
   + **使用本地计算机上的容器镜像 — 您可以在本地计算机**上安装软件来创建自己的容器镜像，然后将其推送到您的 Lightsail 容器服务。有关更多信息，请参阅以下指南：
     + [安装软件来管理您的 Lightsail 容器服务的容器镜像](amazon-lightsail-install-software.md)
     + [为您的 Lightsail 容器服务创建容器镜像](amazon-lightsail-creating-container-images.md)
     + [在 Lightsail 容器服务上推送和管理容器镜像](amazon-lightsail-pushing-container-images.md)
   + **使用公共注册表中的容器镜像 — 您可以从** Amazon ECR 公共库等公共注册表中查找和使用 Lightsail 容器服务的容器镜像。有关 Amazon ECR 公开映像浏览馆的更多信息，请参阅*《Amazon ECR Public 用户指南》*中的[什么是 Amazon Elastic Container Registry Public？](https://docs.aws.amazon.com/AmazonECR/latest/public/what-is-ecr.html)。

1. [安装软件来管理您的 Lightsail 容器服务的容器镜像](amazon-lightsail-install-software.md)。

1. [为您的 Lightsail 容器服务创建容器镜像](amazon-lightsail-creating-container-images.md)。

1. 在 [Lightsail 容器服务上推送和管理容器镜像](amazon-lightsail-pushing-container-images.md)。

1. 在配置和启动容器的容器服务中创建部署。有关更多信息，请参阅[创建和管理您的 Lightsail 容器服务的部署](amazon-lightsail-container-services-deployments.md)。

1. 查看之前的容器服务部署。您可以使用之前的部署版本来创建新的部署。有关更多信息，请参阅[查看和管理 Lightsail 容器服务的部署版本](amazon-lightsail-container-services-deployment-versions.md)。

1. 查看容器服务的容器日志。有关更多信息，请参阅[查看 Lightsail 容器服务的容器日志](amazon-lightsail-viewing-container-service-container-logs.md)。

1. 为要用于容器的域名创建 SSL/TLS 证书。有关更多信息，请参阅为您的 L [ightsail 容器服务创建 SSL/TLS 证书](amazon-lightsail-creating-container-services-certificates.md)。

1. 通过向域名的 DNS 中添加记录来验证 SSL/TLS 证书。有关更多信息，请参阅[验证您的 Lightsail 容器服务的 SSL/TLS 证书](amazon-lightsail-validating-container-services-certificates.md)。

1. 通过将有效 SSL/TLS 证书附加到您的容器服务来启用自定义域。有关更多信息，请参阅[为您的 Lightsail 容器服务启用和管理自定义域](amazon-lightsail-enabling-container-services-custom-domains.md)。

1. 监控容器服务的利用率指标。有关更多信息，请参阅[查看容器服务指标](amazon-lightsail-viewing-container-services-metrics.md)。

1. （可选）通过提高容器服务的指定功率来纵向扩展容量，以及通过提高其指定的规模来横向扩展容量。有关更多信息，请参阅[更改 Lightsail 容器服务的容](amazon-lightsail-changing-container-service-capacity.md)量。

1. 如果未在使用容器服务，请将其删除，以免每月产生费用。有关更多信息，请参阅[删除 Lightsail 容器服务](amazon-lightsail-deleting-container-services.md)。