
【Docker基礎】コンテナのイメージ化
ここまで、公式が提供するイメージを使ってコンテナを起動してきました。しかし、自分の作ったコンテナを “そのまま” 別のパソコンやサーバに持って行きたい場面は、意外と多いものです。そこで重要になるのが、「コンテナをイメージにする」テクニック。
ここでは、コンテナをイメージ化する方法として、「commit(コンテナからの書き出し)」と「Dockerfile(ビルド)」の 2 つのアプローチを学びます。サーバエンジニアにとっては必須知識ですので、ぜひ押さえておきましょう。

1.コンテナをイメージ化するメリット
- 同じ構成のコンテナを量産
・一度カスタマイズしたコンテナを“ひな形”として繰り返し使える。
・バージョンの違いや環境差が出にくい。 - コンテナの移動が容易
・イメージファイルにしてしまえば、他のパソコンやサーバにコピーしてdocker run
するだけで再現できる。 - チーム開発や本番運用で役立つ
・開発チームにまったく同じ環境を配る。
・CI/CD パイプラインでイメージを扱う。
2.コンテナを量産できるイメージ作成のイメージ
2.1. コンテナそのものをコピーはできない

Docker ではコンテナを直接コピーする仕組みは存在せず、イメージを作ってからコンテナを増やすという流れになります。
コンテナ
|
| docker commit
v
イメージ
|
| docker save
v
イメージファイル
|
| 移動
v
別の環境
|
| docker load
v
イメージ
|
| docker run
v
コンテナの量産
3.コンテナのイメージ化には 2 つの方法
- docker commit
・すでに動いている(あるいは停止している)コンテナを元に、コマンド1つでイメージを作成
手軽だが、コンテナを自分で作り込む必要があり、“手順書” が残りにくい。 - Dockerfile
・Dockerfile に「何をコピー」「どんなコマンドを実行」など手順を記述し、docker build
でイメージ化
・再現性や保守性に優れ、チーム開発で重宝する。
・イメージを一から作るため、最初に Dockerfile を書く手間がかかる。
3-1. commit でイメージを書き出す
docker commit <コンテナ名> <作成するイメージ名>
- 例:
docker commit my-container myapp:1.0
- 用途: 既に構築済みコンテナを丸ごとイメージ化したいとき
- 注意: コンテナの状態や設定を後から確認しづらい(Dockerfile 的な手順書がない)
3-2. Dockerfile でイメージを作成する
docker build -t <作成するイメージ名> <材料フォルダのパス>
- 例:
docker build -t myapp:1.0 .
- 用途: 手順書(Dockerfile)を元に自動的にイメージをビルド
- 特徴:
・Dockerfile にFROM
やCOPY
、RUN
などを記述
・再現性が高く、チームで共有しやすい。
Dockerfile の例
FROM ubuntu:latest
COPY app/ /usr/src/app/
RUN apt-get update && apt-get install -y python3
CMD ["python3", "/usr/src/app/main.py"]
- FROM: ベースイメージ指定
- COPY: ホストの
app/
ディレクトリをコンテナ内/usr/src/app/
にコピー - RUN: イメージビルド時に実行するコマンド
- CMD: コンテナ起動時のデフォルトコマンド
4.主な Dockerfile コマンド(覚えておきたいもの)
コマンド | 内容 |
---|---|
FROM | ベースにするイメージを指定 |
COPY | ホストのファイル/フォルダをイメージに追加 |
RUN | イメージビルド時にLinuxコマンドを実行 |
CMD | コンテナ起動時に実行する既定コマンドを指定 |
ENTRYPOINT | コンテナの起動コマンドを強制する(CMDより優先度高) |
ENV | 環境変数を定義 |
WORKDIR | RUN/CMD時の作業ディレクトリを指定 |
EXPOSE | コンテナが使用するポートを宣言(実際の通信には-p などでマッピングが必要) |
5.まとめ
- コンテナをイメージ化するメリット: 同じ環境の再利用や移動が容易
- 2つの方法:
・docker commit
→ すでにあるコンテナを簡単にイメージ化
・Dockerfile +docker build
→ 再現性・管理性に優れた方法 - サーバエンジニアにとっては必須スキル: システムのアップデートや移行をスムーズにする。
次のコンテンツでは、これらの手法を実際にどのように操作するか、さらに詳しく解説していきます。どちらを選ぶかはシーンによりけりですが、Dockerfile 方式が主流です。まずは、手軽なcommitでイメージを作る方法から紹介します。