docker commit の使い方

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

書き方

docker commit コンテナ 名前:タグ
docker commit -m メッセージ コンテナ 名前:タグ
docker commit -c 'CMD ["nginx", "-g", "daemon off;"]' コンテナ 名前

コンテナの中で変えたファイルを、そのまま新しいイメージにします。ボリュームの中身は入りません。何をしたかが残らないので、ふだんは Dockerfile で作ります。

よく使うオプション

オプション意味
-m メッセージ何をしたかのメモを残す
-a 名前作った人を残す
-c 命令CMD・ENV・EXPOSE などの Dockerfile の命令も足す
-p作っている間コンテナを一時停止する(既定で付いている)

例

$ docker commit -m 'hotfix' web web:hotfixsha256:6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b

web の中で直したファイルを、そのまま web:hotfix というイメージにします。

$ docker diff webC /etc
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf
A /tmp/debug.log

commit の前に、コンテナの中で何が変わったかを確かめます。A は増えた、C は変わった、D は消えたファイルです。

$ docker commit -c 'ENV APP_ENV=debug' api api:debug

変更といっしょに、環境変数の設定もイメージに入れます。

よくある間違い・注意

  • 何をしたかが Dockerfile に残らないので、同じものを作り直せません。急ぎの調査用と考え、直したことは Dockerfile にも書きます。
  • ボリュームの中身はイメージに入りません。
  • パスワードやログなど、余計なファイルもそのまま入ってしまいます。

実際に打って練習する

Docker コースの Lv63「その場の船を型にする docker commit」で覚えます(第8章 港の守り(本番運用))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜7 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。

Docker コマンド一覧(使い方と例)へ戻る