

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

# 的 Docker 镜像构建服务器示例 CodeBuild
<a name="sample-docker-server"></a>

以下示例将您的 Docker 构建卸载到托管式映像编译服务器。您可以调整此示例，以便在 CodeBuild 项目配置中配置专用的托管 Docker 镜像生成服务器。请注意，当项目的构建正在运行时，预调配的实例处于活动状态，当构建未在运行时，实例将停止。预调配的实例最多可存储一个月，然后被回收利用。有关更多信息，请参阅 [ CodeBuild Docker 服务器功能](https://aws.amazon.com/blogs//aws/accelerate-ci-cd-pipelines-with-the-new-aws-codebuild-docker-server-capability)。

**重要**  
运行此示例可能会导致您的 AWS 账户被扣款。其中包括与 Amazon S3 和 CloudWatch 日志相关的 AWS 资源和操作可能产生的费用。 CodeBuild AWS KMS有关更多信息，请参阅[CodeBuild 定价](https://aws.amazon.com/codebuild/pricing)、[Amazon S3 定价](https://aws.amazon.com/s3/pricing)、[AWS Key Management Service 定价](https://aws.amazon.com/kms/pricing)和[亚马逊 CloudWatch定价](https://aws.amazon.com/cloudwatch/pricing)。

**Topics**
+ [配置 Docker 服务器](#sample-docker-server-running)

## 配置 Docker 服务器
<a name="sample-docker-server-running"></a>

使用以下步骤为管理 Docker 工作负载和存储 Docker 映像层的 CodeBuild 项目配置专用计算环境。

**配置 Docker 服务器**

1. 按照本主题[目录结构](#sample-docker-server-dir)和[文件](#sample-docker-server-files)部分所述创建文件，然后将其上传到 S3 输入存储桶或 AWS CodeCommit GitHub、或 Bitbucket 存储库。
**重要**  
请不要上传 `(root directory name)`，而只上传 `(root directory name)` 中的文件。  
如果您使用的是 S3 输入存储桶，请务必创建一个包含这些文件的 ZIP 文件，然后将其上传到输入存储桶。请不要将 `(root directory name)` 添加到 ZIP 文件中，而只添加 `(root directory name)` 中的文件。

1. 创建构建项目、运行构建和查看相关构建信息：

   1. 在控制台的**环境**部分，选择**其他配置**，导航到 **Docker 服务器配置**，然后选择**为此项目启用 Docker 服务器**。然后，您可以选择 **Docker 服务器计算类型**并提供**注册表凭证**。

   1. 如果您使用创建构建项目，则`create-project`命令的 JSON 格式输入可能与此类似。 AWS CLI (请将占位符替换为您自己的值。)

      ```
      {
        "name": "sample-docker-custom-image-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/DockerServerSample.zip"
        },
        "artifacts": {
          "type": "NO_ARTIFACTS"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/amazonlinux-x86_64-standard:5.0",
          "computeType": "BUILD_GENERAL1_LARGE",
          "dockerServer": [ 
               { 
                  "computeType": "BUILD_GENERAL1_LARGE",
                  "securityGroupIds": [ "security-groups-ID" ]
               }
            ]
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name"
      }
      ```
**注意**  
为 Docker 服务器配置的安全组应支持来自在项目中配置的 VPC 的传入网络流量。它们应该支持在端口 9876 上传入。

1. 要查看构建结果，请在构建的日志中查找字符串 `Hello, World!`。有关更多信息，请参阅 [查看构建详细信息](view-build-details.md)。

### 目录结构
<a name="sample-docker-server-dir"></a>

此示例采用以下目录结构。

```
(root directory name)
├── buildspec.yml
└── Dockerfile
```

### 文件
<a name="sample-docker-server-files"></a>

在此示例中使用的操作系统的基本映像是 Ubuntu。此示例将使用这些文件。

`buildspec.yml`（在 `(root directory name)`）

```
version: 0.2

phases:
  build:
    commands:
      - docker buildx build -t helloworld --load .
      - docker run helloworld echo "Hello, World!"
```

`Dockerfile`（在 `(root directory name)`）

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest 
 
RUN echo "Hello World"
```