CircleCI のビルド済み Docker イメージ

Last updated
Tags Cloud Server v3.x Server v2.x

This document provides information about pre-built CircleCI images (convenience images) and a listing by language, service type, and tags.

概要

CircleCI では、すぐに使える Docker イメージを多数提供しています。 These images are typically extensions of official Docker images, and include tools especially useful for CI/CD.

This document provides an overview of best practices when using a convenience image. Please note that we advise using the next-generation convenience images (these start cimg/) rather than legacy images, as explained below.

イメージを直接検索したい場合は、以下の場所から CircleCI イメージを閲覧することができます。

_**注: ** CircleCI は、バグの修正または機能の強化のために、スケジュールに沿ってイメージに変更を加えることがあります。 こうした変更によって、CircleCI ジョブ内でのイメージの動作に影響が生じる可能性があります。 メンテナンスのスケジュールは、Discuss ページで convenience-images タグを付けて事前に通知されますので、定期的にご確認ください。

ビルド済み CircleCI Docker イメージのデモ アプリケーションでの使用例については、チュートリアルを参照してください。

次世代の CircleCI イメージ

このセクションで紹介する次世代のコンビニエンス イメージは、CI、効率性、確定的動作を念頭に置いてゼロから設計されました。 注目ポイントは次のとおりです。

スピンアップ時間の短縮 – Docker 的な言い方をすれば、次世代イメージは概してレイヤーがより少なく、より小さくなっています。 これらの新しいイメージを使用すると、ビルド開始時にイメージがすばやくダウンロードされると共に、イメージが既にホストにキャッシュされている可能性が高くなります。

信頼性と安定性の向上 – 従来版は、アップストリームからの変更によってほぼ毎日再ビルドされるため、テストが十分に行われていない場合があります。 そのため、互換性が損なわれる変更が頻発してしまい、安定した確定的なビルドに最適な環境とは言えなくなっています。 次世代イメージは、セキュリティと致命的なバグについてのみ再ビルドされるため、より安定した確定的なイメージとなります。

CircleCI のベースイメージ

ベースイメージ を使って設定すると、以下の例のようになります。

  myjob:
    docker:
      - image: cimg/base:2021.04

これは必要最低限のものをインストールするように設計された、まったく新しい Ubuntu ベースのイメージです。 次世代版の CircleCI イメージは、すべてこのイメージがベースとなります。

最適な用途

汎用的なイメージを CircleCI で実行したり、Orb で使用したり、独自のカスタム Docker イメージのベースとして利用する必要がある場合に、このイメージをお使いください。

関連資料

このイメージの設定ファイルのサンプルはデベロッパー ハブ、ソース コードとドキュメントは GitHub で入手できます。

以下の例では、上記の ベースのイメージをベースにした、次世代のGoイメージを使用する方法を示しています。

  myjob:
    docker:
      - image:  cimg/go:1.16

これは従来の CircleCI Go イメージ (circleci/golang) の後継となるものです。 Docker Hub の名前空間は cimg であることに留意してください。 他の言語の次世代イメージは、以下をご覧ください。

ベストプラクティス

以降のセクションで扱う次世代コンビニエンス イメージは、最新の Ubuntu LTS Docker イメージをベースにしており、言語またはサービスのベース ライブラリがインストールされています。したがって、可能な限り最も当てはまるイメージを使用することをお勧めします。 これで、いずれかのアップストリームイメージによってイメージに意図しない変更が組み込まれることを防止し、より決定論的にビルドを行うことができます。

したがって、アップストリームからの想定外の変更を防止するには、アップストリーム版の変更に伴ってそのイメージが変更されないよう、cimg/ruby:2.4-node と記述するのではなく、そのコンテナのさらに細かいバージョンを指定するようにタグを書き換えます。

たとえば、cimg/ruby:2.4.10-node のように、使用するイメージのバージョンを限定的に指定してください。 バージョンは CircleCI のすべての Docker イメージで指定できます。

また、使用するイメージを特定の SHA に至るまで指定することができます。 具体的には、cimg/ruby:2.4.10-node ではなく、cimg/ruby@sha256:e4aa60a0a47363eca3bbbb066620f0a5967370f6469f6831ad52231c87ca9390 のように指定します。 これにより、変更を加える前に特定のイメージを好きなだけテストすることができます。

イメージの指定に関する注意点

注: 従来のイメージを使用していてタグが指定されていない場合、Docker は 最新のタグを適用します。 最新のタグ が参照するのは、安定版の最新リリースのイメージです。 ただし、このタグは突然変わることもあるので、バージョンなどが明確なイメージタグを挿入するのがおすすめです。

注: Node.js バリアントの Docker イメージ (-node で終わるタグ) に対しては、Node.js の LTS リリースがプリインストールされています。 独自に特定のバージョンの Node.js/NPM を使用する場合は、.circleci/config.yml 内の 実行 ステップで設定できます。 Ruby イメージと共に特定のバージョンの Node.js をインストールする例については、以下を参照してください。

version: 2.1

jobs:
  build:
    docker:
      - image: cimg/ruby:2.7.1-node
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
    steps:
      - checkout
      - run:
          name: "Update Node.js and npm"
          command: |
            curl -sSL "https://nodejs.org/dist/v11.10.0/node-v11.10.0-linux-x64.tar.xz" | sudo tar --strip-components=2 -xJ -C /usr/local/bin/ node-v11.10.0-linux-x64/bin/node
            curl https://www.npmjs.com/install.sh | sudo bash
      - run:
          name: Check current version of node
          command: node -v

イメージ ID の確認方法

以下の手順で、Docker イメージの ID を確認してください。

  1. CircleCI にアクセスし、そのイメージを使用した過去のビルドを表示します。
  2. [Spin up Environment (環境のスピンアップ)] ステップをクリックします。
  3. ログ内でそのイメージの ダイジェスト を確認します。
  4. そこに記載されたイメージ ID を以下のようにイメージ名の末尾に付加します。
cimg/python@sha256:bdabda041f88d40d194c65f6a9e2a2e69ac5632db8ece657b15269700b0182cf

イメージのタイプ

CircleCI イメージは、言語イメージとサービス イメージのいずれかのカテゴリに分類されます。 すべてのイメージは、circleci ユーザーをシステムユーザーとして追加します。 以下のセクションでは、利用可能な次世代および従来のイメージについて説明します。

次世代の言語イメージ

次世代言語イメージは、従来のものと同様、一般的なプログラミング言語に対応するコンビニエンス イメージであり、 関連する言語と共通して使用されるツールの両方が含まれます。 言語イメージを指定するときは、設定ファイル内の docker キー配下の最初の行に挿入します。したがって、ビルドの実行中はこれがプライマリコンテナになります。

CircleCI は、以下の言語に対応する次世代イメージを開発しています。

上記以外の言語のイメージが必要な場合は、CircleCI のアイデア ボードでリクエストしてください。 まず、リクエストの前にアイデア ボード内を検索し、 同じアイデアがすでに投稿されている場合は、そのアイデアに投票してください。 まだ投稿されていなければ、カテゴリを 「イメージ」に設定してアイデアを投稿してください。 その後、そのアイデアを友人や同僚、フォーラム、その他のコミュニティに紹介して、票を集めることをお勧めします。

CircleCI では、獲得票数の多いアイデアほど、正式な開発を優先的に検討しています。

次世代の言語イメージのバリアント

CircleCI は、次世代言語イメージに対していくつかのバリアントを用意しています。 次世代イメージについては、イメージごとにそれぞれのバリアントを確認するようにしてください。 次世代イメージの -browsers バリアントは現在作成中です。 サポートされているバリアントの詳細については、デベロッパー ハブでイメージの一覧を参照してください。

従来の言語イメージ

従来の言語イメージは、一般的なプログラミング言語に対応するコンビニエンス イメージです。 よく使われる言語とインストール済みツールの両方を組み合わせたイメージとなっています。 言語イメージを指定するときは、設定ファイル内の docker キー配下の最初の行に挿入します。したがって、ビルドの実行中はこれがプライマリコンテナになります。

CircleCI は、以下の言語に対応する従来のイメージを提供しています。

次世代の言語イメージのバリアント

CircleCI は、言語イメージに対していくつかのバリアントを用意しています。 これらのバリアントを使用するには、以下のサフィックスの 1つをイメージタグの末尾に追加します。

  • -node: 多言語対応の Node.js が含まれます。
  • -browsers: Chrome、Firefox、OpenJDK v11、および GeckoDriver が含まれます。
  • -node-browsers: -node バリアントと -browsers バリアントの組み合わせです。

例えば、circleci/golang:1.9 イメージにブラウザーを追加する場合は、circleci/golang:1.9-browsers イメージを使用します。

次世代の言語イメージ

サービスイメージは、データベースなどのサービスに対応するコンビニエンスイメージです。 これらのイメージは言語イメージの後にリストし、セカンダリ サービス コンテナとして使用します。

CircleCI は、以下のサービスに対応する従来のイメージを提供しています。

サービス イメージのバリアント

CircleCI は、サービスイメージに対してバリアント 1つのみ用意しています。 RAM ボリュームを使用してビルドを高速化するには、サービスイメージタグの末尾に -ram サフィックスを追加します。

例えば、circleci/postgres:9.5-postgis イメージで RAM ボリュームを使用する場合は、circleci/postgres:9.5-postgis-ram イメージを使用します。

次世代のサービス イメージ

CircleCI では、次世代サービス コンビニエンス イメージの拡充に取り組んでいます。 使用可能な最新のサービス イメージについては、CircleCI のデベロッパー ハブを参照してください。

プリインストール ツール

すべてのコンビニエンス イメージは、apt-get と共にインストールされた追加ツールで拡張されています。

  • bzip2
  • ca-certificates
  • curl
  • git
  • gnupg
  • gzip
  • locales
  • mercurial (従来のイメージのみ)
  • net-tools
  • netcat
  • openssh-client
  • parallel
  • sudo
  • tar
  • unzip
  • wget
  • xvfb (従来のイメージのみ)
  • zip

特定の CircleCI イメージのバリアントにインストールされる特定のパッケージの特定のバージョンは、そのバリアントのベース イメージにインストールされている Linux ディストリビューション/バージョンのパッケージ ディレクトリに含まれるデフォルト バージョンに依存します。 従来の CircleCI コンビニエンス イメージは Debian Jessie または Stretch をベースにしていますが、次世代イメージ (cimg) は公式の Ubuntu イメージを拡張したものです。 次世代イメージの詳細については、デベロッパー ハブを参照してください。 各イメージの変更履歴は、それぞれのリポジトリに掲載されています。

下記のパッケージは curl でインストールされます。

対象外のイメージ

  1. 上記一覧に記載されていないイメージは利用できません。 CircleCI イメージの提供プログラムが刷新されたため、現在のところ新しいイメージについての提案は受け付けていません。
  2. 旧バージョンのソフトウェアは再ビルドされません。 アップストリーム イメージの特定のリリース (Node.js v8.1.0 など) 用のタグが作成されなくなった場合、CircleCI でもイメージの作成を終了します。 つまり、そのイメージ (npm など) に含まれる他のツールも更新されなくなります。
  3. プレビュー、ベータ版、リリース候補を指定するイメージ タグには対応していません。 利用できることもありますが、これらのタグが原因となってCircleCI イメージのビルド システムに問題が発生しやすくなります。 特定の言語の非安定版リリースが必要な場合は、Orb またはカスタム Docker イメージからインストールすることをお勧めします。

Legacy image tags by language

従来のコンビニエンス イメージについて、最新のものを言語別に紹介します。

注: CircleCI は、言語イメージのバリアントおよびサービス イメージのバリアント以外の従来のイメージに対して使用されるタグについては管理していません。 これらのタグは開発元が手がけるプロジェクトとして作成、メンテナンスされています。 似た名前のタグでも同じ内容のイメージとは限らないことにご注意ください。

Android

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/android:[TAG]

Recent Tags:

See the tag list for circleci/android on Docker Hub/tags?ordering=last_updated).


buildpack-deps

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/buildpack-deps:[TAG]

Recent Tags:

See the tag list for circleci/buildpack-deps on Docker Hub/tags?ordering=last_updated).


Clojure

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/clojure:[TAG]

Recent Tags:

See the tag list for circleci/clojure on Docker Hub/tags?ordering=last_updated).


DynamoDB

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/dynamodb:[TAG]

Recent Tags:

See the tag list for circleci/dynamodb on Docker Hub/tags?ordering=last_updated).


Elixir

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/elixir:[TAG]

Recent Tags:

See the tag list for circleci/elixir on Docker Hub/tags?ordering=last_updated).


Go (Golang)

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/golang:[TAG]

Recent Tags:

See the tag list for circleci/golang on Docker Hub/tags?ordering=last_updated).


JRuby

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/jruby:[TAG]

Recent Tags:

See the tag list for circleci/jruby on Docker Hub/tags?ordering=last_updated).


MariaDB

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/mariadb:[TAG]

Recent Tags:

See the tag list for circleci/mariadb on Docker Hub/tags?ordering=last_updated).


MongoDB

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/mongo:[TAG]

Recent Tags:

See the tag list for circleci/mongo on Docker Hub/tags?ordering=last_updated).


MySQL

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/mysql:[TAG]

Recent Tags:

See the tag list for circleci/mysql on Docker Hub/tags?ordering=last_updated).


Node.js

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/node:[TAG]

Recent Tags:

See the tag list for circleci/node on Docker Hub/tags?ordering=last_updated).


OpenJDK

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/openjdk:[TAG]

Recent Tags:

See the tag list for circleci/openjdk on Docker Hub/tags?ordering=last_updated).


PHP

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/php:[TAG]

Recent Tags:

See the tag list for circleci/php on Docker Hub/tags?ordering=last_updated).


PostgreSQL

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/postgres:[TAG]

Recent Tags:

See the tag list for circleci/postgres on Docker Hub/tags?ordering=last_updated).


Python

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/python:[TAG]

Recent Tags:

See the tag list for circleci/python on Docker Hub/tags?ordering=last_updated).


Redis

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/redis:[TAG]

Recent Tags:

See the tag list for circleci/redis on Docker Hub/tags?ordering=last_updated).


Ruby

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/ruby:[TAG]

Recent Tags:

See the tag list for circleci/ruby on Docker Hub/tags?ordering=last_updated).


Rust

リソース

  • Docker Hub - where this image is hosted as well as some useful instructions.

使用方法: config.yml の docker: に以下の行を追加します。

- image: circleci/rust:[TAG]

Recent Tags:

See the tag list for circleci/rust on Docker Hub/tags?ordering=last_updated).


関連項目

  • プライベート リポジトリまたは Amazon ECR にあるイメージのビルドでの使用を承認する方法については、「Docker の認証付きプルの使用」を参照してください。
  • iOS 用の macOS イメージの詳細については、(/docs/2.0/testing-ios/) を参照してください。
  • Docker イメージをビルドする方法については、「Docker コマンドの実行手順」を参照してください。


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースで、GitHub で使用できます。 ご協力いただき、ありがとうございます。