|
| 1 | +--- |
| 2 | +layout: classic-docs |
| 3 | +title: "Pre-Built CircleCI Docker Images" |
| 4 | +short-title: "Pre-Built CircleCI Docker Images" |
| 5 | +description: "Listing of available images maintained by CircleCI" |
| 6 | +categories: [containerization] |
| 7 | +order: 20 |
| 8 | +--- |
| 9 | + |
| 10 | +ここでは、以下のセクションに沿って、CircleCI が提供しているビルド済みイメージの概要と、言語別、サービスタイプ別、タグ別のイメージについて説明します。 |
| 11 | + |
| 12 | +- 目次 |
| 13 | +{:toc} |
| 14 | + |
| 15 | +## 概要 |
| 16 | +{:.no_toc} |
| 17 | + |
| 18 | +CircleCI ではすぐに使える Docker イメージを多数提供しています。 一般に、これらのイメージは正式な Docker イメージの拡張版で、特に CI/CD にとって便利なツールが含まれます。 すべてのビルド済みイメージは、[Docker Hub の CircleCI Org](https://hub.docker.com/r/circleci/) から入手できます。 GitHub の `circleci-images` リポジトリには[各 Docker イメージのソースコード](https://github.com/circleci/circleci-images)も用意しています。 これらの <a href=」https://github.com/circleci-public/circleci-dockerfiles">Docker イメージの作成に使用する Dockerfile</a> は `circleci-dockerfiles` リポジトリで確認できます。 |
| 19 | + |
| 20 | +***メモ:**CircleCI は、バグの修正または機能の強化のために、スケジュールに沿ってイメージに変更を加えることがあり、こうした変更によって CircleCI ジョブ内でのイメージの動作に影響が生じる可能性があります。 メンテナンスのスケジュールは、[Discuss ページに **convenience-images** タグを付けて通知](https://discuss.circleci.com/tags/convenience-images)されますので、定期的にご確認ください。* |
| 21 | + |
| 22 | +## ベストプラクティス |
| 23 | + |
| 24 | +コンビニエンスイメージは、アップストリームイメージの最新版のビルドに基づいています。したがって、可能な限り最も当てはまるイメージを使用することをお勧めします。 これで、いずれかのアップストリームイメージによってイメージに意図しない変更が組み込まれることを防止し、より決定論的にビルドを行うことができます。 |
| 25 | + |
| 26 | +アップストリーム版を基にビルド済みイメージを作成している CircleCI では、`circleci/ruby:2.4-node` と記述した場合、最新版の Ruby 2.4-node コンテナを使うことを意味し、 あるいは `circleci/ruby:latest` としても結果は同じになります。 ベストプラクティスとして、タグを追加して使用するイメージを指定すれば、ビルドコンテナの状態を固定することができます。 |
| 27 | + |
| 28 | +したがって、アップストリームからの想定外の変更を防止するには、アップストリーム版の変更に伴ってそのイメージが変更されないよう、`circleci/ruby:2.4-node` と記述するのではなく、そのコンテナのさらに細かいバージョンを指定するようにタグを書き換えます。 |
| 29 | + |
| 30 | +たとえば、決まったバージョンの Debian ベースの OS のみを使用するには、`-jessie` や `-stretch` をコンテナ名の末尾に追記します。 `circleci/ruby:2.3.7-jessie` や `circleci/ruby:2.3-jessie` のように、使用するイメージのバージョンを限定的に指定します。 バージョンは CircleCI のすべての Docker イメージで指定できます。 |
| 31 | + |
| 32 | +また、使用するイメージを特定の SHA に至るまで指定することができます。 これにより、変更が加えられるまでの間、特定のイメージをテストすることができます。 |
| 33 | + |
| 34 | +使用するイメージを細かく指定するには、以下の 2つの方法があります。 |
| 35 | + |
| 36 | +- タグを使用してイメージのバージョンや OS を指定する |
| 37 | +- Docker イメージ ID を使用してバージョンを指定する |
| 38 | + |
| 39 | +**メモ:**Node.js バリアントの Docker イメージ (`-node` で終わるタグ) に対しては、Node.js の LTS リリースがプリインストールされています。 独自に特定のバージョンの Node.js/NPM を使用する場合は、`.circleci/config.yml` 内の `run` ステップで設定できます。 Ruby イメージと共に特定のバージョンの Node.js をインストールする例については、以下を参照してください。 |
| 40 | + |
| 41 | +```yaml |
| 42 | +version: 2.0 |
| 43 | +jobs: |
| 44 | + build: |
| 45 | + docker: |
| 46 | + - image: circleci/ruby:2.4.2-jessie-node |
| 47 | + steps: |
| 48 | + - checkout |
| 49 | + - run: |
| 50 | + name: "Node.js と npm を更新" |
| 51 | + command: | |
| 52 | + 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 |
| 53 | + curl https://www.npmjs.com/install.sh | sudo bash |
| 54 | + - run: |
| 55 | + name: 現行バージョンのノードをチェック |
| 56 | + command: node -v |
| 57 | +``` |
| 58 | +
|
| 59 | +### バージョンや OS を指定するイメージタグの使用方法 |
| 60 | +{:.no_toc} |
| 61 | +
|
| 62 | +[イメージタグ](https://docs.docker.com/engine/reference/commandline/tag/#extended-description)を追加することで、Docker イメージの状態を固定できます。 |
| 63 | +
|
| 64 | +たとえば、`circleci/golang` の代わりに `circleci/golang:1.8.6-jessie` を使用して、バージョンと OS を指定します。 後者はバージョンと OS を指定しているため、意図しない変更の影響を受けるリスクが抑えられます。 |
| 65 | + |
| 66 | +以降に掲載した[言語別の最新イメージタグ](#言語別の最新イメージタグ)の一覧を参照してください。 |
| 67 | + |
| 68 | +**メモ:**タグが指定されていない場合、Docker は `latest` タグを適用します。 `latest` タグは、イメージの最新の安定したリリースを示します。 ただし、このタグは予期せずに変更される可能性があるため、明示的なイメージタグを追加することをお勧めします。 |
| 69 | + |
| 70 | +### 特定のバージョンを指定する Docker イメージ ID の使用方法 |
| 71 | +{:.no_toc} |
| 72 | + |
| 73 | +すべての Docker イメージは[一意の ID](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier) を持ちます。 このイメージ ID を使用して、特定のバージョンのイメージを指定できます。 |
| 74 | + |
| 75 | +各イメージ ID は、以下のような不変の SHA256 ダイジェストです。 |
| 76 | + |
| 77 | + sha256:df1808e61a9c32d0ec110960fed213ab2339451ca88941e9be01a03adc98396e |
| 78 | + |
| 79 | + |
| 80 | +#### イメージ ID の確認方法 |
| 81 | +{:.no_toc} |
| 82 | + |
| 83 | +1. CircleCI にアクセスし、そのイメージを使用した過去のビルドを表示します。 |
| 84 | +2. **[Test Summary (テストサマリー)]** タブの **Spin up Environment** ステップをクリックします。 |
| 85 | +3. ログ内でそのイメージの **Digest** を確認します。 |
| 86 | +4. そこに記載されたイメージ ID を以下のようにイメージ名の末尾に付加します。 |
| 87 | + |
| 88 | + circleci/ruby@sha256:df1808e61a9c32d0ec110960fed213ab2339451ca88941e9be01a03adc98396e |
| 89 | + |
| 90 | + |
| 91 | +## イメージのタイプ |
| 92 | + |
| 93 | +CircleCI のコンビニエンスイメージは、**言語**イメージと**サービス**イメージのいずれかのカテゴリに分類されます。 すべてのイメージは、`circleci` ユーザーをシステムユーザーとして追加します。 |
| 94 | + |
| 95 | +**メモ:**以下のイメージは、それぞれの言語に対してビルドされた最新のアップストリームイメージに基づいています。 最新のイメージは変更される可能性が高いため、より限定的なタグを使用することが<a href="#best-practices」>ベストプラクティス</a>として推奨されます。 |
| 96 | + |
| 97 | +### 言語イメージ |
| 98 | +{:.no_toc} |
| 99 | + |
| 100 | +言語イメージは、一般的なプログラミング言語に対応するコンビニエンスイメージです。 これらのイメージには、関連する言語と[共通して使用されるツール](#プリインストールツール)の両方が含まれます。 言語イメージは、ユーザー設定内の `docker` キーの下に最初にリストされ、実行中は[プライマリコンテナ]({{ site.baseurl }}/ja/2.0/glossary/#primary-container){:target="_blank"}になります。 |
| 101 | + |
| 102 | +CircleCI は、以下の言語に対応するイメージを提供しています。 |
| 103 | + |
| 104 | +- [Android](#android) |
| 105 | +- [Clojure](#clojure) |
| 106 | +- [Elixir](#elixir) |
| 107 | +- [Go (Golang)](#go-golang) |
| 108 | +- [JRuby](#jruby) |
| 109 | +- [Node.js](#nodejs) |
| 110 | +- [OpenJDK (Java)](#openjdk) |
| 111 | +- [PHP](#php) |
| 112 | +- [Python](#python) |
| 113 | +- [Ruby](#ruby) |
| 114 | +- [Rust](#rust) |
| 115 | + |
| 116 | +上記以外の言語を使用する場合は、CircleCI が提供する [Dockerfile Wizard](https://github.com/circleci-public/dockerfile-wizard) を使用してカスタムイメージを作成できます。 |
| 117 | + |
| 118 | +#### 言語イメージのバリアント |
| 119 | +{:.no_toc} |
| 120 | + |
| 121 | +CircleCI は、言語イメージに対していくつかのバリアントを用意しています。 これらのバリアントを使用するには、以下のサフィックスの 1つをイメージタグの末尾に追加します。 |
| 122 | + |
| 123 | +- `-node`:多言語対応の Node.js が含まれます。 |
| 124 | +- `-browsers`:Chrome、Firefox、Java 8、および Geckodriver が含まれます。 |
| 125 | +- `-browsers-legacy`:Chrome、Firefox、Java 8、および PhantomJS が含まれます。 |
| 126 | +- `-node-browsers`:`-node` バリアントと `-browsers` バリアントの組み合わせです |
| 127 | +- `-node-browsers-legacy`:`-node` バリアントと `-browsers-legacy` バリアントの組み合わせです。 |
| 128 | + |
| 129 | +たとえば、`circleci/golang:1.9` イメージにブラウザーを追加する場合は、`circleci/golang:1.9-browsers` イメージを使用します。 |
| 130 | + |
| 131 | +### サービスイメージ |
| 132 | +{:.no_toc} |
| 133 | + |
| 134 | +サービスイメージは、データベースなどのサービスに対応するコンビニエンスイメージです。 これらのイメージは言語イメージの**後に**リストされ、セカンダリサービスコンテナになります。 |
| 135 | + |
| 136 | +CircleCI は、以下のサービスに対応するイメージを提供しています。 |
| 137 | + |
| 138 | +- [buildpack-deps](#buildpack-deps) |
| 139 | +- [DynamoDB](#dynamodb) |
| 140 | +- [MariaDB](#mariadb) |
| 141 | +- [MongoDB](#mongodb) |
| 142 | +- [MySQL](#mysql) |
| 143 | +- [PostgreSQL](#postgresql) |
| 144 | +- [Redis](#redis) |
| 145 | + |
| 146 | +#### サービスイメージのバリアント |
| 147 | +{:.no_toc} |
| 148 | + |
| 149 | +CircleCI は、サービスイメージに対してバリアント 1つのみ用意しています。 RAM ボリュームを使用してビルドを高速化するには、サービスイメージタグの末尾に `-ram` サフィックスを追加します。 |
| 150 | + |
| 151 | +たとえば、`circleci/postgres:9.5-postgis` イメージで RAM ボリュームを使用する場合は、`circleci/postgres:9.5-postgis-ram` イメージを使用します。 |
| 152 | + |
| 153 | +## プリインストールツール |
| 154 | + |
| 155 | +すべてのコンビニエンスイメージは、追加のツールを使用して拡張されています。 |
| 156 | + |
| 157 | +[Android イメージ](https://hub.docker.com/r/circleci/android)以外のすべてのイメージには、以下のパッケージが含まれ、`apt-get` を使用してインストールされます。 |
| 158 | + |
| 159 | +- `bzip2` |
| 160 | +- `ca-certificates` |
| 161 | +- `curl` |
| 162 | +- `git` |
| 163 | +- `gnupg` |
| 164 | +- `gzip` |
| 165 | +- `locales` |
| 166 | +- `mercurial` |
| 167 | +- `net-tools` |
| 168 | +- `netcat` |
| 169 | +- `openssh-client` |
| 170 | +- `parallel` |
| 171 | +- `sudo` |
| 172 | +- `tar` |
| 173 | +- `unzip` |
| 174 | +- `wget` |
| 175 | +- `xvfb` |
| 176 | +- `zip` |
| 177 | + |
| 178 | +特定の CircleCI イメージバリアントにインストールされる特定パッケージの具体的なバージョンは、そのバリアントの基本イメージにインストールされている Linux ディストリビューション/バージョンのパッケージディレクトリに含まれるデフォルトバージョンに依存します。 大部分の CircleCI コンビニエンスイメージは、[Debian Jessie](https://packages.debian.org/jessie/) ベースまたは [Stretch](https://packages.debian.org/stretch/) ベースのイメージですが、[Ubuntu](https://packages.ubuntu.com) ベースのイメージを拡張したイメージも提供されています。 CircleCI イメージの各バリアントの詳細については、[circleci-dockerfiles](https://github.com/circleci-public/circleci-dockerfiles) リポジトリを参照してください。 |
| 179 | + |
| 180 | +以下のパッケージは、`curl` などの方法でインストールされます。 |
| 181 | + |
| 182 | +- [Docker クライアント](https://docs.docker.com/install/) |
| 183 | +- [Docker Compose](https://docs.docker.com/compose/overview/) |
| 184 | +- [dockerize](https://github.com/jwilder/dockerize) |
| 185 | +- [jq](https://stedolan.github.io/jq/) |
| 186 | + |
| 187 | +## 言語別の最新イメージタグ |
| 188 | + |
| 189 | +最新のコンビニエンスイメージを言語別に紹介します。 各イメージの内容の詳細については、[対応する Dockerfile](https://github.com/circleci-public/circleci-dockerfiles) を参照してください。 |
| 190 | + |
| 191 | +**メモ:**[言語イメージのバリアント](#言語イメージのバリアント)および[サービスイメージのバリアント](#サービスイメージのバリアント)以外のイメージでどのようなタグが使用されるかを CircleCI は**関知しません**。 これらのタグは、アップストリームプロジェクトによって選択および維持されます。 特定のタグがイメージ間で同じ意味を持つと断定しないように注意してください。 |
| 192 | + |
| 193 | +{% assign images = site.data.docker-image-tags | sort %} |
| 194 | +{% for image in images %} |
| 195 | + |
| 196 | +### {{ image[1].name }} |
| 197 | +{:.no_toc} |
| 198 | + |
| 199 | +**リソース** |
| 200 | + |
| 201 | +- [DockerHub](https://hub.docker.com/r/circleci/{{ image[0] }}) - このイメージがホスティングされる場所。便利な指示書も用意されています。 |
| 202 | +- [Dockerfiles](https://github.com/CircleCI-Public/circleci-dockerfiles/tree/master/{{ image[0] }}/images) - このイメージのビルド元の Dockerfile。 |
| 203 | + |
| 204 | +**使用方法:**config.yml の `docker:` に以下の行を追加します。 |
| 205 | + |
| 206 | +`- image: circleci/{{ image[0] }}:[TAG]` |
| 207 | + |
| 208 | +**最新のタグ**<small>(すべてのイメージタグは<a href="{{ site.baseurl }}/ja/2.0/docker-image-tags.json">こちら</a>{:target="_blank"})</small> |
| 209 | + |
| 210 | +<ul class="list-3cols"> |
| 211 | +{% assign tags = image[1].tags | sort | reverse %} |
| 212 | +{% assign tagCounter = 1 %} |
| 213 | +{% for tag in tags %} |
| 214 | + {% if tagCounter > 99 %} |
| 215 | + {% break %} |
| 216 | + {% endif %} |
| 217 | + {% unless tag contains "-browsers" or tag contains "-node" or tag contains "-ram" %} |
| 218 | + <li> |
| 219 | + {{ tag }} |
| 220 | + </li> |
| 221 | + {% assign tagCounter = tagCounter | plus:1 %} |
| 222 | + {% endunless %} |
| 223 | +{% endfor %} |
| 224 | +</ul> |
| 225 | + |
| 226 | +メモ:このイメージで使用可能なバリアントは、上記のタグにバリアントタグを追加することで使用できます。 すべてのイメージタグは[こちら]({{ site.baseurl }}/ja/2.0/docker-image-tags.json){:target="_blank"}で確認できます。 |
| 227 | + |
| 228 | +* * * |
| 229 | + |
| 230 | +{% endfor %} |
| 231 | + |
| 232 | +## 関連項目 |
| 233 | +{:.no_toc} |
| 234 | + |
| 235 | +プライベートリポジトリまたは Amazon ECR にあるイメージの使用をビルドに承認する方法については、[プライベートイメージの使用]({{ site.baseurl }}/ja/2.0/private-images/)を参照してください。 |
0 commit comments