流れ8の6語目 / 10

コンテナイメージ

開発

チームで、CIのチェック用の道具のバージョンを上げることになり、動いているコンテナの中で直接入れ直そうとしたら

「中で直さないで、Dockerfileを直してイメージをビルドして」
「コンテナイメージ」って、何のことだろう…?

コンテナイメージは、コンテナを作るための「ひな型」です。

動くのに必要なものがまとめて入っていて、1つのイメージから同じ中身のコンテナをいくつでも作れます。イメージの作り方は Dockerfile というファイルに書き、それをもとにイメージを作ることを「ビルド」といいます。

このページで分かること読む 約3分・問題 3問
  • コンテナイメージは、コンテナを作るための「ひな型」
  • 作り方を Dockerfile というファイルに書き、ビルド(docker build)してイメージを作る
  • 1つのイメージから、同じ中身のコンテナをいくつでも起動できる
  • イメージはレジストリ(Docker Hub や各クラウドのレジストリ)に置いて共有する

身近な例えで理解する

会社で新しいパソコンを何台も配るとき、担当者は、必要なソフトと設定を入れた「マスター」を作り、それを写して同じパソコンを何台も用意します。

  • 用意するソフトや設定の手順書Dockerfile
  • マスターを作るビルド
  • マスターコンテナイメージ
  • マスターを写して配ったパソコンコンテナ

配ったあと1台だけ設定を変えても、マスターは変わりません。全部のパソコンをそろえて変えたいときは、マスターを作り直します。

ちょっと確認

Q1並べ替え

チェック用の道具を入れたコンテナを、CIでも使えるようにするまでの順番に並べてください。

下のカードを、正しい順にタップしてください。

例えを外して、実際のしくみ

ここからは実際のしくみ
Dockerfile

イメージの作り方を書いたテキストファイルです。もとにするイメージ(FROM)、ビルドのときに実行するコマンド(RUN)、入れるファイル(COPY)、起動したときに動かすコマンド(CMD)などを書きます。テキストなので、Gitで管理してプルリクエストでレビューできます

ビルド

Dockerfile をもとにイメージを作ることです。Docker では docker build を使います。イメージは、変更を重ねた層(レイヤー)でできています

イメージは変わらない

一度作ったイメージは書き換えられません。動いているコンテナの中で直したことは、そのコンテナにしか残らず、同じイメージから新しく作ったコンテナには入っていません。変えたいときは、Dockerfile を直してビルドし直します。作り直したイメージは新しい別のイメージで、同じ名前(タグ。例:latest)をつけると、その名前が新しいほうを指すようになります。名前が同じでも中身が同じとは限りません

レジストリで共有する

イメージは「レジストリ」という置き場に置いて、ほかの人やCI、クラウドのサーバーが取り出せるようにします。代表例は Docker Hub や、各クラウドのレジストリです。中身の分からない人のイメージをそのまま使わないこと、アクセスキーやパスワードをイメージに入れないこと(→25 アクセスキー・トークン)が大切です

このページのまとめ

コンテナイメージ
コンテナを作るためのひな型。必要なものがまとめて入っている
Dockerfile
イメージの作り方を書いたファイル
ビルド
Dockerfile をもとにイメージを作ること
レジストリ
イメージを置いて共有する場所

先輩のひとことの意味

先輩「中で直さないで、Dockerfileを直してイメージをビルドして」

「動いているコンテナの中で直しても、そのコンテナにしか残らないし、ほかの人にも伝わらない。作り方の Dockerfile を直してイメージを作り直せば、そのイメージから作るコンテナは全部そろうし、変更もGitに残る」という意味です。

練習問題で確かめる

Q2先輩のひとこと
先輩「動いてるコンテナの中で道具を入れ直しても、コンテナを作り直したら消えるよ」

では、道具のバージョンを上げるにはどうする?

Q34択

Dockerfile に書いてはいけないものは?

参考資料

ご意見・「これで例えて!」を募集しています

ご意見・ご感想・質問・間違いのご指摘など、何でもお気軽にお寄せください。「この言葉も例えで説明してほしい」「こんな例えなら分かりやすい」という声をもとに、新しいページや例えを作ります。

  • 説明してほしいITの言葉
  • 例えてほしい場面(部活・アルバイト・家事など)
  • 分かりにくかったところ・間違いのご指摘

意見箱は準備中です。

解説・例え・練習問題はすべてオリジナルです。参考にしているのは公式ドキュメントのみです。ご意見・ご感想・間違いのご指摘など、何でもお寄せください。確認してすぐに直します。

LinuCはLPI-Japanの登録商標です。当サイトはLPI-Japanおよび他の企業・団体とは関係ありません。

運営:core