このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker基礎】コンテナからcommitでイメージを作る

コンテナからcommitでイメージを作る
これまでは公式のイメージ(たとえば httpd
)をそのまま使っていましたが、ときには 自分が持っているコンテナ をそのままイメージにしたい場面が出てきます。これを実現するのが docker commit
コマンドです。ここでは、実行中または停止中のコンテナをイメージ化 する方法を、Apache コンテナを例にして解説します。

1.やることの流れ
- Apache コンテナの作成・起動
- コンテナを停止して安定した状態にする(必要に応じて)
docker commit
を使って コンテナをイメージ化- 確認(
docker image ls
などでイメージの存在を確認) - 後始末(不要なイメージやコンテナを削除)
2.作成するイメージの情報
項目 | 値 |
---|---|
コンテナ名 | apache-container |
書き出すイメージ名 | apache-original1 |
3.コマンドの概要
1. コンテナを作成・起動
docker run --name apache-container -d -p 8080:80 httpd
2. コンテナを停止(必要なら)
docker stop apache-container
3. コンテナからイメージを作成(commit)
docker commit apache-container apache-original1
4. イメージ一覧で確認
docker image ls
5. イメージの削除(不要なら)
docker image rm apache-original1
4.手順詳細
STEP 1:Apache コンテナを作成
- Apache のイメージ (
httpd
) を使ってコンテナを起動 - コンテナ名は
apache-container
、ポートは8080:80
docker run --name apache-container -d -p 8080:80 httpd
ヒント: 初期画面の確認は
http://localhost:8080/
でどうぞ
コンテナを停止(必要に応じて)
コンテナを commit する際は、コンテナの安定した状態が望ましいため、docker stop
で停止することが多いです。(動作中でも commit は可能ですが、書き込み中のデータなどがあると不整合の恐れがあります)
docker stop apache-container
STEP2:コンテナをイメージに書き出す
次に、docker commit
でコンテナ apache-container
を元にして、イメージ apache-original1
を作成します。
docker commit apache-container apache-original1
これで、コンテナの状態(Apache の設定やファイルの変更なども含む)がイメージとして保存されました。
STEP 3:イメージの作成を確認
docker image ls
実行結果(例)
REPOSITORY TAG IMAGE ID CREATED SIZE
apache-original1 latest b3fc0dd095da 42 seconds ago 147MB
httpd latest 4ce47c750a58 5 months ago 147MB
ここに apache-original1
が表示されていれば成功です。
STEP4:後始末
「apache-original1」イメージが不要なら削除します。オリジナルの httpd
イメージはそのまま残しておいて構いません。
docker image rm apache-original1
また、コンテナも必要なければ停止・削除しておきましょう。
docker rm apache-container
まとめ
- docker commit: コンテナからイメージを作成するコマンド
・既に構築済みのコンテナの状態をそのままイメージ化
・バージョン管理や簡易的なバックアップにも使える。 - 使い所:
・コンテナ内で色々カスタマイズした環境を一括で再利用したい。
・移動先(別マシンなど)で同じ環境をサクッと再現したい。 - 注意点:
・“動いているコンテナ” からcommit
すると、一部不完全な状態が書き出される可能性あり(停止させるのがおすすめ)
・Dockerfile を使ったビルド方式ほど再現性は高くない。
次のコンテンツでは、Dockerfile を使ったイメージ作成の方法を見ていきます。より複雑なイメージや、チームでの共有を考えるなら、Dockerfile によるビルドが主流です。