Dockerコンテナ内で行なった変更をDockerイメージとして書き出す
Dockerコンテナ内で行なった変更をDockerイメージとして書き出してみる。
まずは適当なコンテナを起動して
code:sh
# 適当なコンテナを起動
$ docker run --rm -it busybox sh
ディレクトリ /root のファイルを一覧。ディレクトリは空っぽ
code:sh
$ cd /root
$ ls
$
/root にファイル foo を作成
code:sh
$ echo hello > a
$ cat a
hello
$
コンテナを起動したまま別ターミナルを起動、起動中のコンテナの名前を確認。コンテナ名は elated_gauss みたい
code:sh
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67b0e12f7924 busybox "sh" 19 minutes ago Up 19 minutes elated_gauss
起動中のコンテナ elated_gauss の内容を、イメージ my-busybox として書き出す
code:sh
$ docker commit elated_gauss my-busybox
イメージ my-busybox が作成されている
code:sh
$ docker images | grep my-busybox
my-busybox latest c878ffeb52b5 About a minute ago 4.04MB
イメージ my-busybox から新しくコンテナを起動、ファイル /root/a が存在することが確認できる
code:sh
$ docker run --rm -it my-busybox sh
$ cd /root/
$ ls
a
$ cat a
hello
$
まとめ
コンテナ内で行なった変更は、以下のコマンドでイメージとして書き出せる。
docker commit (変更を行なったコンテナのID) (作成するイメージの名前)