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:6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7bweb の中で直したファイルを、そのまま web:hotfix というイメージにします。
$ docker diff webC /etc
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf
A /tmp/debug.logcommit の前に、コンテナの中で何が変わったかを確かめます。A は増えた、C は変わった、D は消えたファイルです。
$ docker commit -c 'ENV APP_ENV=debug' api api:debug
変更といっしょに、環境変数の設定もイメージに入れます。
よくある間違い・注意
- 何をしたかが Dockerfile に残らないので、同じものを作り直せません。急ぎの調査用と考え、直したことは Dockerfile にも書きます。
- ボリュームの中身はイメージに入りません。
- パスワードやログなど、余計なファイルもそのまま入ってしまいます。
実際に打って練習する
Docker コースの Lv63「その場の船を型にする docker commit」で覚えます(第8章 港の守り(本番運用))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜7 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。