ニュース
» 2015年11月11日 07時30分 公開

古賀政純の「攻めのITのためのDocker塾」:第10回 Docker環境におけるバックアップ/リストアの罠 (3/4)

[古賀政純(日本ヒューレット・パッカード),ITmedia]

Dockerイメージのセーブとロードって?

 次に、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.

注目のテーマ