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

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

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

Docker環境におけるバックアップとリストアを知る

 Dockerの世界におけるバックアップとリストアは、どのようなものなのでしょうか。罠は存在しないのでしょうか。まず、Dockerでのバックアップ/リストアの世界を少しだけのぞいてみましょう。Docker環境では、主に以下の4つの基本コマンドが用意されています。

  • docker export
  • docker import
  • docker save
  • docker load

 それぞれの使い方をみていきましょう。docker exportは、コンテナのファイルシステムをtarアーカイブとして保存するコマンドです。具体的には以下のような使い方になります。まず、バックアップ対象となるコンテナtest01を起動します。今回は、CentOS 7.1のDockerイメージからコンテナを起動します。


# docker run -itd --name test01 -h test01 centos:centos7.1.1503 /bin/bash
# docker ps -a
CONTAINER ID  IMAGE                   COMMAND      CREATED        STATUS        PORTS    NAMES
f0aaeddbe988  centos:centos7.1.1503   "/bin/bash"  7 seconds ago  Up 2 seconds           test01

 稼働しているコンテナtest01のファイルシステムをtarアーカイブとして保存します。


# docker export test01 > test01.tar

 取得したtarアーカイブのファイルサイズを確認してみましょう。


# ls -lh test01.tar
-rw-r--r--. 1 root root 211M 11月  6 01:00 test01.tar

 211Mバイトのtarアーカイブであることが分かります。このtarアーカイブの中身を確認してみましょう。


# tar tvf test01.tar
-rwxr-xr-x 0/0               0 2015-11-06 00:58 .dockerenv
-rwxr-xr-x 0/0               0 2015-11-06 00:58 .dockerinit
lrwxrwxrwx 0/0               0 2015-03-31 01:57 bin -> usr/bin
drwxr-xr-x 0/0               0 2015-11-06 00:58 dev/
-rwxr-xr-x 0/0               0 2015-11-06 00:58 dev/console
lrwxrwxrwx 0/0               0 2015-03-31 01:55 dev/fd -> /proc/self/fd
crw-rw-rw- 0/0             1,7 2015-03-31 01:55 dev/full
crw-rw-rw- 0/0             1,3 2015-03-31 01:55 dev/null
crw-rw-rw- 0/0             5,2 2015-03-31 01:55 dev/ptmx
...
...

 このように、Dockerコンテナのファイルシステムがtarアーカイブとして得られたことが分かります。すなわち、Dockerコンテナのファイルシステムをtarアーカイブとしてバックアップできたことを意味します。このtarアーカイブを別の物理サーバ(今回、別の物理サーバのホスト名をsvr02とし、svr02のコマンドプロンプトを「svr02 #」で表すとします)で稼働するDocker環境にscpコマンドなどでコピーし、Dockerイメージとして登録できるか確認してみましょう。docker exportで得られたtarアーカイブは、docker importコマンドで、再びDockerイメージとして登録することができます。


# scp test01.tar svr02:/root/
svr02 # cat test01.tar |docker import - centos:centos7.1.1503
svr02 # docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              centos7.1.1503      0f64c9eca0c0        42 seconds ago      212.1 MB

 ファイルシステムを固めたtarアーカイブからDockerイメージにインポートできましたので、Dockerコンテナとして起動できるかを確認します。


svr02 # docker run -itd --name test01 -h test01 centos:centos7.1.1503 /bin/bash

 このように、docker exportとdocker importを使えば、稼働中のDockerコンテナのファイルシステムをtarアーカイブでバックアップし、別のサーバでDockerイメージとして登録し、リストアすることができます。ちなみに、このdocker importは、今回の例でご紹介したtar形式以外にも、tar.gz形式、tgz形式、bzip形式、tar.xz形式、txz形式に対応しています。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ