このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Docker基礎】コンテナからcommitでイメージを作る

コンテナからcommitでイメージを作る

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

1.やることの流れ

  1. Apache コンテナの作成・起動
  2. コンテナを停止して安定した状態にする(必要に応じて)
  3. docker commit を使って コンテナをイメージ化
  4. 確認docker image ls などでイメージの存在を確認)
  5. 後始末(不要なイメージやコンテナを削除)

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 コンテナを作成

  1. Apache のイメージ (httpd) を使ってコンテナを起動
  2. コンテナ名は 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 によるビルドが主流です。