無料でビルドを開始
CircleCI.comアカデミーブログコミュニティサポート

CircleCI イメージ

11 months ago3 min read
クラウド
Server v4.x
Server v3.x
このページの内容

このドキュメントでは、CircleCI イメージ (CircleCI が提供するビルド済み Docker イメージ) について説明します。また、各言語、サービスタイプ、タグごとのイメージをご確認いただけます。

概要

CircleCI では、すぐに使える Docker イメージを多数提供しています。 通常、これらの CircleCI イメージは公式 Docker イメージの拡張版で、特に CI/CD に便利なツールが含まれています。

このドキュメントでは、CircleCI イメージを使用する際のベストプラクティスを紹介します。 下記で説明していますが、レガシーイメージではなく、次世代 CircleCI イメージを使用することをお勧めします。

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

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

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

次世代 CircleCI イメージ

このセクションで紹介する次世代 CircleCI イメージは、CI、効率性、決定論性を念頭に置いてゼロから作成されました。 注目ポイントは次のとおりです。

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

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

CircleCI のベースイメージ

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

  myjob:
    docker:
      - image: cimg/base:2021.04
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference

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

最適な用途

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

リソース

イメージの設定ファイルのその他のサンプルは、 Developer Hub を、ソース コードとドキュメントは GitHub をご覧ください。

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

  myjob:
    docker:
      - image:  cimg/go:1.16
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference

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

ベストプラクティス

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

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

例えば、cimg/ruby:2.4.10-node のように、イメージの特定のバージョンを指定してください。 バージョンは CircleCI のすべての イメージで指定できます。

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

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

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

注: 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 イメージには 2 種類あります。

  • 言語イメージ
  • サービスイメージ

すべてのイメージは、CircleCI ユーザーをシステムユーザーとして追加します。 以下のセクションでは、ご利用いただける次世代イメージとレガシーイメージについて説明します。

次世代言語イメージ

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

すべてのイメージは、 Developer Hub でご確認いただけます。

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

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

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

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

レガシー言語イメージ

レガシー言語イメージは、一般的なプログラミング言語に対応する CircleCI イメージです。 よく使われる言語と インストール済みツールの両方を組み合わせたイメージとなっています。 言語イメージを指定するときは、設定ファイル内の 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 は、以下のサービスに対応するレガシーイメージを提供しています。

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

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

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

インストール済みツール

すべての 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 イメージを拡張したものです。 次世代イメージの詳細については、 Developer Hub を参照してください。 各イメージの変更履歴は、それぞれのリポジトリに掲載されています。

以下のパッケージは、curl などの方法で CircleCI イメージにプリインストールされています。

対象外のイメージ

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

言語別のレガシーイメージタグ

レガシー CircleCI イメージ について、最新のものを言語別に紹介します。

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

Android

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/android:[TAG]

最近のタグ:

Docker Hub の circleci/android のタグリストを参照してください。


buildpack-deps

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

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

最近のタグ:

Docker Hub の circleci/buildpack-deps のタグリストを参照してください。


Clojure

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/clojure:[TAG]

最近のタグ:

Docker Hub の circleci/clojure のタグリストを参照してください。


DynamoDB

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/dynamodb:[TAG]

最近のタグ:

Docker Hub の circleci/dynamodb のタグリストを参照してください。


Elixir

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/elixir:[TAG]

最近のタグ:

Docker Hub の circleci/elixir のタグリストを参照してください。


Go (Golang)

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/golang:[TAG]

最近のタグ:

Docker Hub の circleci/golang のタグリストを参照してください。


JRuby

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/jruby:[TAG]

最近のタグ:

Docker Hub の circleci/jruby のタグリストを参照してください。


MariaDB

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/mariadb:[TAG]

最近のタグ:

Docker Hub の circleci/mariadb のタグリストを参照してください。


MongoDB

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/mongo:[TAG]

最近のタグ:

Docker Hub の circleci/mongo のタグリストを参照してください。


MySQL

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/mysql:[TAG]

最近のタグ:

Docker Hub の circleci/mysql のタグリストを参照してください。


Node.js

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/node:[TAG]

最近のタグ:

Docker Hub の circleci/node のタグリストを参照してください。


OpenJDK

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/openjdk:[TAG]

最近のタグ:

Docker Hub の circleci/openjdk のタグリストを参照してください。


PHP

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/php:[TAG]

最近のタグ:

Docker Hub の circleci/php のタグリストを参照してください。


PostgreSQL

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/postgres:[TAG]

最近のタグ:

Docker Hub の circleci/postgres のタグリストを参照してください。


Python

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/python:[TAG]

最近のタグ:

Docker Hub の circleci/python のタグリストを参照してください。


Redis

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/redis:[TAG]

最近のタグ:

Docker Hub の circleci/redis のタグリストを参照してください。


Ruby

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/ruby:[TAG]

最近のタグ:

Docker Hub の circleci/ruby のタグリストを参照してください。


Rust

リソース

  • Docker Hub: このイメージがホスティングされる場所。他にも役立つ情報が提供されています。

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

- image: circleci/rust:[TAG]

最近のタグ:

Docker Hub の circleci/rust のタグリストを参照してください。


次のステップ

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

Suggest an edit to this page

Make a contribution
Learn how to contribute