過去に下記の記事を書いております。
その中でdocker commitについてあまり触れていなかったので、今回はdocker commitに的を絞り記載致します。
- ■流れ
- ■1.Dockerホスト内に適当にindex.htmlを作成
- ■2.httpd2.4のコンテナを一つ起動
- ■3.docker cpコマンドにてindex.htmlをコンテナにコピー
- ■4.docker commitコマンドの実行
- ■5.docker commitコマンド後の状況確認
- ■6.docker historyコマンドによる履歴確認
- ■7.docker commitコマンドで作成したイメージを利用する
- ■8.後始末
■流れ
1.Dockerホスト内に適当にindex.htmlを作成
2.httpd2.4のコンテナを一つ起動
3.docker cpコマンドにてindex.htmlをコンテナにコピー
4.docker commitコマンドの実行
5.docker commitコマンド後の状況確認
6.docker historyコマンドによる履歴確認
7.docker commitコマンドで作成したイメージを利用する
8.後始末
■1.Dockerホスト内に適当にindex.htmlを作成
以下の通り、/var/tmp/apache2/index.htmlを用意しました。

■2.httpd2.4のコンテナを一つ起動
コンテナを起動します。コンテナ名はweb1としました。

■3.docker cpコマンドにてindex.htmlをコンテナにコピー
/var/tmp/apache2/index.htmlをコンテナ/usr/local/apache2/htdocs/にコピーします。

web1のWebページが開けることを確認します。

次の手順を実行する前に、dockerイメージの一覧を念のため確認しておきます。

■4.docker commitコマンドの実行
docker commitコマンドを実行します。
イメージ名は「custom_web1」としました。

やることは変わらないのですが、
イメージ名にタグ名(1)をつけた状態のコマンドも念のため実行しておきます。

■5.docker commitコマンド後の状況確認
dockerイメージの一覧を確認してみます。
「REPOSITORY」列に新しく「custom_web1」というものが2つ出来上がっています。
一つはタグ無しで作成したもの(=latestが自動付与)、
もう一つはタグありで作成したもの(「TAG」列が「1」)です。

■6.docker historyコマンドによる履歴確認
今回web1というコンテナを基に、docker commitコマンドを利用しdockerイメージを2つ作成しました。
web1はhttpd:2.4というdockerイメージがもとになっております。
httpd:2.4のdockerイメージのhistoryは以下の通りです。

custom_web1のdockerイメージのhistoryは以下の通りです。

差分は以下の通り先頭の1行のみです。(左側がhttpd:2.4 、右側がcustom_web1)

勘違いしそうなところとしては、
custom_web1イメージに「index.htmlをコピーした」というような情報は記録/記載されません。
※詳細には触れませんが、「index.htmlをコピーした」というような更新情報が必要な場合にはDockerfileを利用した方が良いです。
■7.docker commitコマンドで作成したイメージを利用する
custom_web1のイメージを使って、新たに1つコンテナ(web2)を作成します。

webサイトにアクセスできることを確認します。

■8.後始末
web1、web2を削除します。

作成したcustom_web1イメージを削除します。

以上です。