

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# CodeBuild のカスタム Docker イメージのサンプル
<a name="sample-docker-custom-image"></a>

次のサンプルは、 とカスタム Docker ビルドイメージ (`docker:dind`Docker Hub の ) を使用して Docker イメージを構築 AWS CodeBuild して実行します。

代わりに、Docker をサポートする CodeBuild に用意されているビルドイメージを使用して Docker イメージをビルドする方法については、「['Docker イメージを Amazon ECR に公開' サンプル](sample-docker.md)」を参照してください。

**重要**  
このサンプルを実行すると、 AWS アカウントに料金が発生する可能性があります。これには、CodeBuild と Amazon S3 に関連する AWS リソースとアクション AWS KMS、および CloudWatch Logs に対して発生する可能性のある料金が含まれます。 Amazon S3 詳細については、「[g465]CodeBuild 料金表[/g465]」、「[g464]Amazon S3 料金表[/g464]」、「[g463]AWS Key Management Service 料金表[/g463]」、および「[g462]Amazon CloudWatch 料金表[/g462]」を参照してください。

**Topics**
+ [カスタムイメージサンプルで Docker を実行](#sample-docker-custom-image-running)

## カスタムイメージサンプルで Docker を実行
<a name="sample-docker-custom-image-running"></a>

カスタムイメージサンプルで Docker を実行するには、次の手順に従います。このサンプルの詳細については、「[CodeBuild のカスタム Docker イメージのサンプル](#sample-docker-custom-image)」を参照してください。

**カスタムイメージサンプルで Docker を実行するには**

1. このトピックの [ディレクトリ構造](#sample-docker-custom-image-dir)および [ファイル](#sample-docker-custom-image-files)セクションで説明されているようにファイルを作成し、S3 入力バケットまたは AWS CodeCommit、GitHub、または Bitbucket リポジトリにアップロードします。
**重要**  
`(root directory name)` をアップロードしないでください。アップロードするのは、`(root directory name)` 内のファイルのみです。  
S3 入力バケットを使用している場合は、ファイルを必ず ZIP ファイルに圧縮してから入力バケットにアップロードしてください。`(root directory name)` を ZIP ファイルに追加しないでください。追加するのは、`(root directory name)` 内のファイルのみです。

1. ビルドプロジェクトを作成して、ビルドを実行し、関連するビルド情報を表示します。

   を使用してビルドプロジェクト AWS CLI を作成する場合、`create-project`コマンドへの JSON 形式の入力は次のようになります。(プレースホルダは独自の値に置き換えてください。)

   ```
   {
     "name": "sample-docker-custom-image-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/DockerCustomImageSample.zip"
     },
     "artifacts": {
       "type": "NO_ARTIFACTS"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "docker:dind",
       "computeType": "BUILD_GENERAL1_SMALL",
       "privilegedMode": false
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```
**注記**  
デフォルトでは、Docker デーモンは非 VPC ビルドで有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトの「[Runtime Privilege and Linux Capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)」を参照して、特権モードを有効にします。また、Windows は特権モードをサポートしていません。

1. ビルドの結果を表示するには、ビルドのログで文字列 `Hello, World!` を探します。詳細については、「[ビルドの詳細の表示](view-build-details.md)」を参照してください。

### ディレクトリ構造
<a name="sample-docker-custom-image-dir"></a>

このサンプルのディレクトリ構造は次のとおりとします。

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

### ファイル
<a name="sample-docker-custom-image-files"></a>

このサンプルで使用されているオペレーティングシステムの基本イメージは Ubuntu です。このサンプルで使用するファイルは以下のとおりです。

`buildspec.yml` ( 内)`(root directory name)`

```
version: 0.2

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

`Dockerfile` ( 内)`(root directory name)`

```
FROM maven:3.3.9-jdk-8
 
RUN echo "Hello World"
```