次に、docker saveとdocker loadをご紹介します。Docker環境におけるバックアップとしては、稼働中のコンテナのファイルシステムをtarアーカイブで取得するdocker export以外にも、既存のDockerイメージをtar形式でバックアップする方法があります。それがdocker saveです。具体的には、以下のような使い方になります。まず、テスト用のCentOS 6.7のDockerイメージを入手します。
# docker pull centos:centos6.7 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos centos6.7 3fba1048142f 3 weeks ago 190.6 MB
CentOS 6.7のDockerイメージ「centos:centos6.7」をtarアーカイブでセーブします。
# docker save centos:centos6.7 > centos6.7.tar
取得したtarアーカイブのファイルサイズを確認してみましょう。
# ls -lh centos6.7.tar -rw-r--r--. 1 root root 189M 11月 6 02:17 centos6.7.tar
189Mバイトのtarアーカイブであることが分かります。このtarアーカイブの中身を確認してみましょう。
# tar tvf centos6.7.tar ... ... drwxr-xr-x 0/0 0 2015-11-06 02:17 47d44cb6f252ea4f6aecf8a447972de5d9f9f2e2bec549a2f1d8f92557f4d05a/ -rw-r--r-- 0/0 3 2015-11-06 02:17 47d44cb6f252ea4f6aecf8a447972de5d9f9f2e2bec549a2f1d8f92557f4d05a/VERSION -rw-r--r-- 0/0 1187 2015-11-06 02:17 47d44cb6f252ea4f6aecf8a447972de5d9f9f2e2bec549a2f1d8f92557f4d05a/json -rw-r--r-- 0/0 1024 2015-11-06 02:17 47d44cb6f252ea4f6aecf8a447972de5d9f9f2e2bec549a2f1d8f92557f4d05a/layer.tar drwxr-xr-x 0/0 0 2015-11-06 02:17 5fc6f5013018fd5f1e84a3b5d304f03cfb81b6131ca20c968262bc60c2edb107/ -rw-r--r-- 0/0 3 2015-11-06 02:17 5fc6f5013018fd5f1e84a3b5d304f03cfb81b6131ca20c968262bc60c2edb107/VERSION -rw-r--r-- 0/0 1415 2015-11-06 02:17 5fc6f5013018fd5f1e84a3b5d304f03cfb81b6131ca20c968262bc60c2edb107/json -rw-r--r-- 0/0 197120512 2015-11-06 02:17 5fc6f5013018fd5f1e84a3b5d304f03cfb81b6131ca20c968262bc60c2edb107/layer.tar ... ...
先ほどのDockerコンテナのファイルシステムを含んだtest01.tarと異なり、中身は、Dockerエンジンが理解できるJSON形式ファイルやtarアーカイブなどが含まれています。layer.tarファイルに、CentOS 6.7のバイナリやライブラリなどのシステムファイルが収められています。このように、Dockerイメージをtarアーカイブとしてバックアップできることが分かります。このtarアーカイブを別の物理サーバsvr02で稼働するDocker環境にscpコマンドなどでコピーし、コンテナとして利用できるかを確認してみましょう。docker saveで得られたDockerイメージのtarアーカイブは、docker loadによって再びDockerイメージとして登録することができます。
# scp centos6.7.tar svr02:/root/ svr02 # docker load -i centos6.7.tar svr02 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos centos6.7 3fba1048142f 3 weeks ago 190.6 MB
ロードしたDockerイメージがDockerコンテナとして稼働できるかどうかをテストします。
svr02 # docker run -itd --name test02 -h test02 centos:centos6.7 /bin/bash
Copyright © ITmedia, Inc. All Rights Reserved.