【LIVA Z】Dockerで作ったコンテナをイメージ化して保存してみる【Ubuntu18.04】

昨日作ったDockerコンテナ(Asterisk)↓をイメージ化してtarにします。
engetu21.hatenablog.com

1.イメージ化の実施

一応、コンテナは止めておいたほうがいい?と思うので、とりあえず止めます。

$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df8293948e68 ubuntu:18.04 "/bin/bash" 25 hours ago Up 25 hours 0.0.0.0:5060->5060/tcp ubuntu18.04-Asterisk

$ sudo docker stop ubuntu18.04-Asterisk


イメージ化はcommitオプションをつけるとのこと。

$ docker commit ubuntu18.04-Asterisk asterisk

コンテナ(ubuntu18.04-Asterisk)を指定して、イメージ名(asterisk)を指定。
イメージ名はすべて小文字じゃないとエラーになるようです。

$ docker commit ubuntu18.04-Asterisk Asterisk
invalid reference format: repository name must be lowercase

イメージはimagesオプションで確認可能。

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
asterisk latest 82da6fd3119d 12 minutes ago 1.82GB
ubuntu 18.04 7698f282e524 2 weeks ago 69.9MB

サイズでかくない・・・?まぁいいや。

2.イメージの保存(save)

saveオプションでtar化(書庫化)できるらしいです。tarにしたコンテナを別のdocker環境に移すことで、手軽に環境が再構築できるようですね。

$ docker save asterisk > asterisk.tar

ファイルができました。

$ ls -ltrh

  • rw-rw-r-- 1 engetu engetu 1.8G 6月 3 22:38 asterisk.tar

3.loadをしてみる

先程作ったtarイメージをロードしてみます。
その前に一旦イメージ化している「asterisk」を削除

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
asterisk latest 82da6fd3119d 28 minutes ago 1.82GB
ubuntu 18.04 7698f282e524 2 weeks ago 69.9MB
 
$ docker rmi asterisk:latest
Deleted: sha256:82da6fd3119de…
 
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 7698f282e524 2 weeks ago 69.9MB

ロード実行。

$ docker load < asterisk.tar.gz

※進捗状況が表示される。

終わったので確認

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
asterisk latest 82da6fd3119d 34 minutes ago 1.82GB
ubuntu 18.04 7698f282e524 2 weeks ago 69.9MB

問題なく読み込み出来てますね。

4.export/importもあるらしい

どうやらsave/loadとexport/importの2つの手段があるようですが、save/loadはイメージまるごと、export/importはコンテナのみとのこと。
何が違うねん、というところで以下の記事。
qiita.com
save/loadの場合はメタ情報等々も含まれるとのこと。それで1.8GB・・・。(やっぱりでかくない?)
とりあえずsave/loadを使っとけばよさそうですね。

www.itmedia.co.jp
ただし、データベースなどでデータボリュームで指定されたディレクトリは保存しきれないと言ったことがあるようなので、注意が必要な模様です。
(イメージ化するcommitの時点で漏れるらしいので、これはsave/load、export/importのどちらの手段を使っても起こると思われる)