(小ネタ)AWS CodeBuild で Docker コンテナをビルド可能な AWS 提供のイメージについて

記事タイトルとURLをコピーする

AWS CodeBuild のビルドプロジェクトでは、 ビルド環境に Docker コンテナを使用します。 ビルド環境の Docker コンテナ上では、 Docker コンテナをビルド(docker build)することも可能です。

ビルド環境に使用する Docker コンテナのイメージは、AWS 提供のイメージもあります。 AWS 提供のイメージの中では、Ubuntu / Amazon Linux のスタンダードイメージを使うと、docker build を実行できるようです。

ビルドプロジェクト作成時のイメージ選択箇所

公式ドキュメントにはこの情報は載っていませんが、CodeBuildのGitHubリポジトリにあるDockerfileを確認しました。

docker build を実施可能なイメージ(2025/2/7 現在)

Ubuntu / Amazon Linux のスタンダードイメージを使うと、docker build を実行できるようです。

  • standard 5.0
  • standard 6.0
  • standard 7.0
  • amazonlinux-x86_64-standard:4.0
  • amazonlinux-x86_64-standard:5.0
  • amazonlinux-x86_64-standard:corretto8
  • amazonlinux-x86_64-standard:corretto11
  • amazonlinux-aarch64-standard:2.0
  • amazonlinux-aarch64-standard:3.0

詳細

Dockerfile が参照可能なため、Docker のバージョンなども確認できます。
例:

DOCKER_VERSION="27.3.1"

amazonlinux-x86_64-standard:5.0 から Docker をインストールしている箇所を引用します。

# Install Docker 27
ENV DOCKER_BUCKET="download.docker.com" \
    DOCKER_CHANNEL="stable" \
    DIND_COMMIT="3b5fac462d21ca164b3778647420016315289034" \
    DOCKER_COMPOSE_VERSION="2.29.7" \
    DOCKER_BUILDX_VERSION="0.17.1"

ENV DOCKER_SHA256="9b4f6fe406e50f9085ee474c451e2bb5adb119a03591f467922d3b4e2ddf31d3" \
    DOCKER_VERSION="27.3.1"

VOLUME /var/lib/docker

RUN set -ex \
    && curl -fSL "https://${DOCKER_BUCKET}/linux/static/${DOCKER_CHANNEL}/x86_64/docker-${DOCKER_VERSION}.tgz" -o docker.tgz \
    && echo "${DOCKER_SHA256} *docker.tgz" | sha256sum -c - \
    && tar --extract --file docker.tgz --strip-components 1  --directory /usr/local/bin/ \
    && rm docker.tgz \
    && docker -v \
    # Check runc version
    && runc -v \
    # Set up subuid/subgid so that "--userns-remap=default" works out-of-the-box
    && groupadd dockremap \
    && useradd -g dockremap dockremap \
    && echo 'dockremap:165536:65536' >> /etc/subuid \
    && echo 'dockremap:165536:65536' >> /etc/subgid \
    && wget -q "https://raw.githubusercontent.com/docker/docker/${DIND_COMMIT}/hack/dind" -O /usr/local/bin/dind \
    # Install docker compose as docker plugin and maintain docker-compose usage
    && mkdir -p /usr/local/lib/docker/cli-plugins \
    && curl -L https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/docker-compose-Linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose \
    && chmod +x /usr/local/lib/docker/cli-plugins/docker-compose \
    && ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose \
    # Ensure docker-compose and docker compose work
    && docker-compose version \
    && docker compose version \
    # Add docker buildx tool
    && curl -L https://github.com/docker/buildx/releases/download/v${DOCKER_BUILDX_VERSION}/buildx-v${DOCKER_BUILDX_VERSION}.linux-amd64 -o /usr/local/lib/docker/cli-plugins/docker-buildx \
    && chmod +x /usr/local/bin/dind /usr/local/lib/docker/cli-plugins/docker-buildx \
    && ln -s /usr/local/lib/docker/cli-plugins/docker-buildx /usr/local/bin/docker-buildx \
    # Ensure docker-buildx works
    && docker-buildx version \
    && docker buildx version \
    # Cleanup
    && rm -rf /tmp/* /var/tmp/*

docker build を実施不可能なイメージ(2025/2/7 現在)

Lambda 用のイメージは全体的に docker build をできないようでした。

  • amazonlinux-x86_64-lambda-standard:corretto11
  • amazonlinux-x86_64-lambda-standard:corretto17
  • amazonlinux-x86_64-lambda-standard:corretto21
  • amazonlinux-x86_64-lambda-standard:dotnet6
  • amazonlinux-x86_64-lambda-standard:dotnet8
  • amazonlinux-x86_64-lambda-standard:go1.21
  • amazonlinux-x86_64-lambda-standard:nodejs18
  • amazonlinux-x86_64-lambda-standard:nodejs20
  • amazonlinux-x86_64-lambda-standard:python3.11
  • amazonlinux-x86_64-lambda-standard:python3.12
  • amazonlinux-x86_64-lambda-standard:ruby3.2
  • amazonlinux-aarch64-lambda-standard:corretto11
  • amazonlinux-aarch64-lambda-standard:corretto17
  • amazonlinux-aarch64-lambda-standard:corretto21
  • amazonlinux-aarch64-lambda-standard:dotnet6
  • amazonlinux-aarch64-lambda-standard:dotnet8
  • amazonlinux-aarch64-lambda-standard:go1.21
  • amazonlinux-aarch64-lambda-standard:nodejs18
  • amazonlinux-aarch64-lambda-standard:nodejs20
  • amazonlinux-aarch64-lambda-standard:python3.11
  • amazonlinux-aarch64-lambda-standard:python3.12
  • amazonlinux-aarch64-lambda-standard:ruby3.2

まとめ

Ubuntu / Amazon Linux のスタンダードイメージを使うと、docker build を実行できるようです。

VPC モードで Docker イメージをビルドする場合は、「特権付与」を有効にしておくと良いでしょう。

非 VPC モードでは Docker デーモンがデフォルトで有効です。

デフォルトでは、Docker デーモンは非 VPC ビルドで有効になっています。

AWS CodeBuild でのビルドプロジェクトの設定の変更 - AWS CodeBuild

余談

休日に青梅の山をランニングしてきました。里山って良いですね。

山本 哲也 (記事一覧)

カスタマーサクセス部のインフラエンジニア。

山を走るのが趣味です。