第10回 Docker環境におけるバックアップ/リストアの罠:古賀政純の「攻めのITのためのDocker塾」(2/4 ページ)
“攻めのIT”を考える情シスが今後知っておくべき注目の技術「Docker」を基本から応用まで解説します。今回はDocker環境におけるバックアップ/リストアでの注意点をご紹介します。
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形式に対応しています。
関連記事
- 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
- 第2回 chroot/Dockerを手元のWindowsで手軽に試す方法
なぜ企業がDockerに着目するのか、今後の“攻めのIT”に必要と言われているのか。今回はこれをふまえ、簡単にざっくりと体験学習してみませんか。今回は準備編として、CentOS 7.xをお手元のWindows PCで手軽に試す方法を簡単に紹介します。 - ゲームもレースもビッグデータ分析で上手くなる!?
企業の“ビッグデータ活用”への期待度は高い。しかし、現実には「ビッグデータは持っているが活用はできていない」という企業がほとんどだろう。ここでは、思いがけない方法でビッグデータ分析を活用している事例などを紹介する。 - クラウドエバンジェリスト4者対談:「エンタープライズクラウド」は、どこへ向かうのか?
エンタープライズ領域におけるクラウド利用がいよいよ本格的に普及段階に入った。その理由と背景は何か。自社は、導入をどう考えればよいか。主要ベンダーのクラウド関連エバンジェリストに、現状とその未来を分析してもらった。
Copyright © ITmedia, Inc. All Rights Reserved.