2016.08.15

Docker composerでデータコンテナ分離とバックアップ・リストア

難易度
2
カテゴリー
やってみよう!
タグ
Docker

160815_DockerComposer_mv

みなさん、こんにちは。
Startup.Tokyo Inc.の吉岡朗です。
今回は、Composerを使うことで運用管理が楽になります。
前半は、運用が楽になるDocker Composerの説明、後半はデータコンテナ分離とバックアップ・リストアを説明します。


Ⅰ.はじめに

今回は、今はやりのDockerについて基本的なところをおさえつつ、その発展形の1つを説明していきます。
まずは、Dockerの基本的な使い方は、このアカデミーで特集される形になっているおなじみの連載ものがあります。

Docker Tips 目次~Cloud ServerでDockerを使おう~


Ⅱ.用意するもの、環境面の説明

今回は、GMOアカデミーより環境を提供いただきました。
サーバーのスペック、環境面は、以下の通りです。(執筆段階)

項目 内容
サーバースペック GMOクラウド Altus Basicシリーズ CentOS7
テンプレートはCentOS 7.1.1503 64bit_20160223
サーバーはMiniServerタイプ
IPアドレス ***.***.***.***
テスト環境ですが、DNSに以下の名前に仮付与しました。
test1.x1.hogehoge.com, test2.x1.hogehoge.com, test3.x1.hogehoge.com
(hogehoge.comは適宜読み替えてください。)
OSリリースバージョン CentOS Linux release 7.1.1503 (Core)
OSカーネルバージョン Linux version 3.10.0-327.4.4.el7.x86_64
メモリ 500MB
CPUクロック 1GHz
Dockerバージョン 1.10.3-44.el7.centos

 

実行時には# yum updateにてアップデート済みです。

Dockerをインストールします。

# yum install -y docker

Dockerのサービスを起動します。

# systemctl start docker

Dockerをデーモンとして有効化します。

# systemctl enable docker

Docker Composerをインストールします。

# curl -L https://github.com/docker/compose/releases/download/1.7.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose --version
docker-compose version: 1.7.1

Ⅲ.Docker Composerに変えて運用

(1)Docker Composerとは

Dockerは見ての通り、コマンドで起動しますが、前回記載のモデルの場合は、nginxとWordPressを起動する順序を制御するシェルを作らなければなりません。

前回の場合は、nginxを立ち上げたのち、その後にWordPressを起動する順序となると以下の通りです。(逆でもOKです)

# cat run.sh
#!/bin/sh
docker run -d -p 80:80 --name nginx \
-v /tmp/nginx:/etc/nginx/conf.d \
-t nginx

docker run -i -t \
-e VIRTUAL_HOST=test1.x1.hogehoge.com \
-e WORDPRESS_DB_HOST=db1.hogehoge.com \
-e WORDPRESS_DB_USER=hogetest1 \
-e WORDPRESS_DB_PASSWORD=hogehoge \
-e WORDPRESS_DB_NAME=hogetest2 \
-e WORDPRESS_TABLE_PREFIX=wp_ \
--name wordpress1 \
-d -p :80 wordpress

終了や再起動も1つ1つコンテナの名前を指定して行うので、コンテナが増えてくると管理が面倒になってきます。

まとめてストップ

# docker stop nginx
# docker stop wordpress1

まとめてイメージ削除

# docker rm nginx
# docker rm wordpress1

そこで、docker composerを導入すると、先ほどの構成が次のような構成ファイル(YMLファイル)で管理しやすくできます。
この構成ファイル(YMLファイル)の書式は、docker runのオプションと対応しているので、理解しやすい内容になっています。

では、構成ファイルに書き換えて見ましょう。

# cat docker-compose.yml

version: '2'
services:
nginx:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock
- /tmp/nginx:/etc/nginx/conf.d

wordpress1:
image: wordpress
environment:
WORDPRESS_DB_HOST: db1.hoehoge.com:3306
WORDPRESS_DB_USER: hogetest1
WORDPRESS_DB_NAME: hogetest2
WORDPRESS_TABLE_PREFIX: wp_
WORDPRESS_DB_PASSWORD: hogehoge
VIRTUAL_HOST: test1.x1.hogehoge.com

いかがですか?意外に簡単に見ませんか?

この構成ファイルは、サービス単位となるディレクトリ名(wordpress)におきます。

# pwd
/root/wordpress
# ls -al
drwxr-xr-x 2 root root 107 7月 27 15:56 .
dr-xr-x---. 7 root root 4096 7月 22 16:10 ..
-rw-r--r-- 1 root root 668 7月 27 10:31 docker-compose.yml

今回使用したディレクトリは、Docker Composerの「コンテナ名」の一部となります。
後述しますが、Docker Composerで起動したコンテナの名前は
「ディレクトリ名」+ "_" +「サービス名」+ "_" +「数字」
になります。

(2)Docker Composerのイメージを取得

全てのコンテナで使用するDockerイメージがなければ取得します。

# docker-compose pull

【コマンドの説明】

項目 内容
docker-compose Docker Composerのコマンドです
pull Dockerイメージを取得します。

 

# docker-compose pull
Pulling nginx (jwilder/nginx-proxy:latest)...
Trying to pull repository docker.io/jwilder/nginx-proxy ...
latest: Pulling from docker.io/jwilder/nginx-proxy
Digest: sha256:cc41372851fceea0e2c2c2b0dfa456f0fc8c6d481822a7ac46e7e9572825d915
Status: Image is up to date for docker.io/jwilder/nginx-proxy:latest
Pulling wordpress1 (wordpress:latest)...
Trying to pull repository docker.io/library/wordpress ...
latest: Pulling from docker.io/library/wordpress
Digest: sha256:0f73fa5e20b0194c6cffc78143e9b9b966c952b57118be12526edb058726cd92
Status: Image is up to date for docker.io/wordpress:latest
(3)コンテナを起動

全てのコンテナを起動します。

# docker-compose up -d

【コマンドの説明】

項目 内容
docker-compose Docker Composerのコマンドです
up コンテナを起動します
-d デーモンモードで起動します。

 

# docker-compose up -d
Creating network "wordpress_default" with the default driver
Creating wordpress_nginx_1
Creating wordpress_wordpress1_1
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c8df80e73e77 wordpress "/entrypoint.sh apach" 5 seconds ago Up 3 seconds 80/tcp wordpress_wordpress1_1
3ca758e194ff jwilder/nginx-proxy "/app/docker-entrypoi" 5 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, 443/tcp wordpress_nginx_1
#
(3)コンテナのログを出力

コンテナのログを出力します。

# docker-compose logs

【コマンドの説明】

項目 内容
docker-compose Docker Composerのコマンドです
logs ログを出力します

 

# docker-compose logs
Attaching to wordpress_wordpress1_1, wordpress_nginx_1
wordpress1_1 | WordPress not found in /var/www/html - copying now...
wordpress1_1 | Complete! WordPress has been successfully copied to /var/www/html
wordpress1_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.3. Set the 'ServerName' directive globally to suppress this message
wordpress1_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.3. Set the 'ServerName' directive globally to suppress this message
wordpress1_1 | [Tue Jul 26 08:03:58.982455 2016] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.23 configured -- resuming normal operations
wordpress1_1 | [Tue Jul 26 08:03:58.982499 2016] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
nginx_1 | forego | starting nginx.1 on port 5000
nginx_1 | forego | starting dockergen.1 on port 5100
nginx_1 | dockergen.1 | 2016/07/26 08:03:54 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
nginx_1 | dockergen.1 | 2016/07/26 08:03:54 Watching docker events
nginx_1 | dockergen.1 | 2016/07/26 08:03:54 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
#
(4)コンテナの終了

全てのコンテナを終了します。

# docker-compose stop

【コマンドの説明】

項目 内容
docker-compose Docker Composerのコマンドです
stop 終了します

 

# docker-compose stop
Stopping wordpress_wordpress1_1 ... done
Stopping wordpress_nginx_1 ... done
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c8df80e73e77 wordpress "/entrypoint.sh apach" 46 seconds ago Exited (0) 2 seconds ago wordpress_wordpress1_1
3ca758e194ff jwilder/nginx-proxy "/app/docker-entrypoi" 46 seconds ago Exited (2) 3 seconds ago wordpress_nginx_1
#
(5)コンテナの削除

全てのコンテナを削除します。

# docker-compose rm

【コマンドの説明】

項目 内容
docker-compose Docker Composerのコマンドです
rm 削除します

 

# docker-compose rm
WARNING: Not including one-off containers created by `docker-compose run`.
To include them, use `docker-compose rm --all`.
This will be the default behavior in the next version of Compose.Going to remove wordpress_wordpress1_1, wordpress_nginx_1
Are you sure? [yN] y
Removing wordpress_wordpress1_1 ... done
Removing wordpress_nginx_1 ... done
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Ⅳ.コンテナからデータ領域をワケてバックアップとリストア

(1)概要

今までのDockerコンテナは、データ領域が内部にあるので、Dockerを停止させたり、Dockerイメージからコンテナを作ったりすると、データ類は1から作り直しになります。
いわゆるデータの永続性というのがなくなるということになります。

そこでDockerには2つのデータ管理方法があります。
「データボリューム」と「データボリュームコンテナ」です。

表「データボリューム」と「データボリュームコンテナ」の特徴

項目 内容
データボリューム ■ 1つまたは複数のコンテナ内に特別に指定されたディレクトリ(コンテナから見た時)

 Dockerで1つのオブジェクトとして管理されている

 コンテナをまたいで共有と再利用可能である

 データボリュームへ変更した結果はすぐに反映される

 コンテナ自身が消えてもデータボリュームは消えない

データボリュームコンテナ  データボリューム自体は、外部からアクセスができないため、データボリュームコンテナと呼ばれるコンテナを作成し、そこにデータボリュームをマウントする
 コンテナを跨(また)いで永続的なデータが共有できる
 通常のコンテナと何ら変わりありませんが、コンテナのイメージはライトなbusyboxなどを使う

今回は、WordPressとNginxを例に、WordPressのデータ領域をデータコンテナ化し、バックアップとリストアをするようにします。

構成ファイル(YMLファイル)です。

# cat docker-compose.yml
version: '2'
services:
nginx:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock
- /tmp/nginx:/etc/nginx/conf.dwordpress1:
image: wordpress
environment:
WORDPRESS_DB_HOST: db1.hogehoge.com:3306
WORDPRESS_DB_USER: hogetest1
WORDPRESS_DB_NAME: hogetest2
WORDPRESS_TABLE_PREFIX: wp1_
WORDPRESS_DB_PASSWORD: hogehoge
VIRTUAL_HOST: test1.x1.hogehoge.com#データボリュームを利用
volumes:
- "wpdata:/var/www/html"#データボリュームコンテナ
wp-data:
image: busybox
command: /bin/sh
tty: true
#データボリュームを利用
volumes:
- "wpdata:/var/www/html"
- ./backup:/backup#データボリューム
volumes:
wpdata:
(2)イメージ取得

全てのコンテナで使用するDockerイメージがなければ取得します。

# docker-compose pull

【コマンドの説明】

項目 内容
docker-compose Docker Composerのコマンドです
pull Dockerイメージを取得します。

 

# docker-compose pull
Pulling nginx (jwilder/nginx-proxy:latest)...
Trying to pull repository docker.io/jwilder/nginx-proxy ...
latest: Pulling from docker.io/jwilder/nginx-proxy
51f5c6a04d83: Pull complete
(中略)
fd00499281f7: Pull complete
Digest: sha256:cc41372851fceea0e2c2c2b0dfa456f0fc8c6d481822a7ac46e7e9572825d915
Status: Downloaded newer image for docker.io/jwilder/nginx-proxy:latest
Pulling wordpress1 (wordpress:latest)...
Trying to pull repository docker.io/library/wordpress ...
latest: Pulling from docker.io/library/wordpress
5c90d4a2d1a8: Pull complete
(中略)
417100314774: Pull complete
Digest: sha256:0f73fa5e20b0194c6cffc78143e9b9b966c952b57118be12526edb058726cd92
Status: Downloaded newer image for docker.io/wordpress:latest
Pulling wp-data (busybox:latest)...
Trying to pull repository docker.io/library/busybox ...
latest: Pulling from docker.io/library/busybox
8ddc19f16526: Pull complete
Digest: sha256:a59906e33509d14c036c8678d687bd4eec81ed7c4b8ce907b888c607f6a1e0e6
Status: Downloaded newer image for docker.io/busybox:latest
(3)コンテナ起動

全てのコンテナを起動します。

# docker-compose up -d

【コマンドの説明】

項目 内容
docker-compose Docker Composerのコマンドです
up コンテナを起動します
-d デーモンモードで起動します。

 

# docker-compose up -d
Creating network "wordpress_default" with the default driver
Creating wordpress_nginx_1
Creating wordpress_wp-data_1
Creating wordpress_wordpress1_1
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb953a0a806e wordpress "/entrypoint.sh apach" 18 seconds ago Up 13 seconds 80/tcp wordpress_wordpress1_1
5b6a57169028 busybox "/bin/sh" 18 seconds ago Up 7 seconds wordpress_wp-data_1
8ac62edf5bd9 jwilder/nginx-proxy "/app/docker-entrypoi" 18 seconds ago Up 13 seconds 0.0.0.0:80->80/tcp, 443/tcp wordpress_nginx_1
(4)データボリュームコンテナに接続

dockerのデータボリュームコンテナに接続し、テスト書き込みをします。

# docker exec -it wordpress_wp-data_1 /bin/sh
/ #
/ # hostname
5b6a57169028
/ # cd /var/www/html
/var/www/html # ls -la
total 192
drwxr-xr-x 5 www-data www-data 4096 Jul 27 06:46 .
drwxr-xr-x 3 www-data www-data 17 Jul 27 06:46 ..
-rw-r--r-- 1 www-data www-data 234 Jul 27 00:00 .htaccess
-rw-r--r-- 1 root root 22 Jul 27 01:44 1.txt
-rw-r--r-- 1 www-data www-data 418 Sep 25 2013 index.php
-rw-r--r-- 1 www-data www-data 19935 Mar 5 20:14 license.txt
-rw-r--r-- 1 www-data www-data 7360 May 12 11:54 readme.html
-rw-r--r-- 1 www-data www-data 5032 Jan 28 03:35 wp-activate.php
drwxr-xr-x 9 www-data www-data 4096 Jun 21 16:17 wp-admin
-rw-r--r-- 1 www-data www-data 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 1476 Jan 30 21:56 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 2853 Jul 27 06:46 wp-config-sample.php
-rw-r--r-- 1 www-data www-data 3254 Jul 27 06:46 wp-config.php
drwxr-xr-x 6 www-data www-data 79 Jul 27 01:04 wp-content
-rw-r--r-- 1 www-data www-data 3286 May 24 2015 wp-cron.php
drwxr-xr-x 16 www-data www-data 8192 Jun 21 16:17 wp-includes
-rw-r--r-- 1 www-data www-data 2380 Oct 24 2013 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 3316 Nov 5 2015 wp-load.php
-rw-r--r-- 1 www-data www-data 33837 Mar 6 03:06 wp-login.php
-rw-r--r-- 1 www-data www-data 7887 Oct 6 2015 wp-mail.php
-rw-r--r-- 1 www-data www-data 13106 Feb 17 22:58 wp-settings.php
-rw-r--r-- 1 www-data www-data 28624 Jan 28 03:51 wp-signup.php
-rw-r--r-- 1 www-data www-data 4035 Nov 30 2014 wp-trackback.php
-rw-r--r-- 1 www-data www-data 3061 Oct 2 2015 xmlrpc.php
/var/www/html # vi 1.txt
/var/www/html #
/var/www/html # cat 1.txt
test 2016:07:27 15:50
/var/www/html #
/var/www/html #

(Ctrl+p Ctrl+qで抜けます)


160815_docker_src01

データの書き込みはデータボリュームコンテナに書き込みをした結果は、WordPress1コンテナ経由でブラウザに表示されました。

(5)データボリュームコンテナ経由で、バックアップ

バックアップを行います。

# docker run --volumes-from wordpress_wp-data_1 -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /var/www/html

【コマンドの説明】

項目 内容
docker Dockerのコマンドです
run コンテナを起動します
--volumes-from wordpress_wp-data_1 wordpress_wp-data_1というコンテナのボリュームに接続します
-v $(pwd):/backup カレントのディレクトリと、このコンテナ内部のディレクトリをつなげます
ubuntu コンテナのイメージを指定します。
tar 上記のイメージ指定に対する起動オプションとしてtarコマンドを指定します。
(通常はコンソールの場合には/bin/shを指定します。)
cvf tarのコマンドのオプションです。
/backup/backup.tar コンテナ内部のバックアップ場所を指定します。
これは、上記の-v引数によってカレントディレクトリにファイルができます。
/var/www/html コンテナ内部のバックアップ対象先です。wordpressの規定ディレクトリを指定します。

 

# ls -la
合計 16
drwxr-xr-x 2 root root 90 7月 27 15:55 .
dr-xr-x---. 7 root root 4096 7月 22 16:10 ..
-rw-r--r-- 1 root root 668 7月 27 10:31 docker-compose.yml
# docker run --volumes-from wordpress_wp-data_1 -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /var/www/html
Unable to find image 'ubuntu:latest' locally
Trying to pull repository docker.io/library/ubuntu ...
latest: Pulling from docker.io/library/ubuntu
43db9dbdcb30: Pull complete
2dc64e8f8d4f: Pull complete
670a583e1b50: Pull complete
183b0bfcd10e: Pull complete
Digest: sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54b
Status: Downloaded newer image for docker.io/ubuntu:latest
tar: Removing leading `/' from member names
/var/www/html/
/var/www/html/.htaccess
/var/www/html/index.php
/var/www/html/license.txt
/var/www/html/readme.html
(中略)
/var/www/html/wp-trackback.php
/var/www/html/xmlrpc.php
/var/www/html/wp-config.php
/var/www/html/1.txt

ディレクトリの確認

# ls -la
合計 24028
drwxr-xr-x 2 root root 107 7月 27 15:56 .
dr-xr-x---. 7 root root 4096 7月 22 16:10 ..
-rw-r--r-- 1 root root 24586240 7月 27 15:56 backup.tar
-rw-r--r-- 1 root root 668 7月 27 10:31 docker-compose.yml

バックアップファイルの確認

# tar tvf ./backup.tar
drwxr-xr-x www-data/www-data 0 2016-07-27 15:46 var/www/html/
-rw-r--r-- www-data/www-data 234 2016-07-27 09:00 var/www/html/.htaccess
-rw-r--r-- www-data/www-data 418 2013-09-25 09:18 var/www/html/index.php
-rw-r--r-- www-data/www-data 19935 2016-03-06 05:14 var/www/html/license.txt
-rw-r--r-- www-data/www-data 7360 2016-05-12 20:54 var/www/html/readme.html
-rw-r--r-- www-data/www-data 5032 2016-01-28 12:35 var/www/html/wp-activate.php
drwxr-xr-x www-data/www-data 0 2016-06-22 01:17 var/www/html/wp-admin/
-rw-r--r-- www-data/www-data 12892 2016-06-22 01:16 var/www/html/wp-admin/about.php
(中略)
-rw-r--r-- www-data/www-data 33837 2016-03-06 12:06 var/www/html/wp-login.php
-rw-r--r-- www-data/www-data 7887 2015-10-06 23:07 var/www/html/wp-mail.php
-rw-r--r-- www-data/www-data 13106 2016-02-18 07:58 var/www/html/wp-settings.php
-rw-r--r-- www-data/www-data 28624 2016-01-28 12:51 var/www/html/wp-signup.php
-rw-r--r-- www-data/www-data 4035 2014-12-01 06:23 var/www/html/wp-trackback.php
-rw-r--r-- www-data/www-data 3061 2015-10-03 07:46 var/www/html/xmlrpc.php
-rw-r--r-- www-data/www-data 3254 2016-07-27 15:46 var/www/html/wp-config.php
-rw-r--r-- root/root 22 2016-07-27 15:50 var/www/html/1.txt
#
(6)データボリュームに接続してテストファイルを削除

データボリュームコンテナに接続して、削除します。

# docker exec -it wordpress_wp-data_1 /bin/sh
/ #
/ # cd /var/www/html
/var/www/html # ls -la
total 192
drwxr-xr-x 5 www-data www-data 4096 Jul 27 06:46 .
drwxr-xr-x 3 www-data www-data 17 Jul 27 06:46 ..
-rw-r--r-- 1 www-data www-data 234 Jul 27 00:00 .htaccess
-rw-r--r-- 1 root root 22 Jul 27 06:50 1.txt
-rw-r--r-- 1 www-data www-data 418 Sep 25 2013 index.php
-rw-r--r-- 1 www-data www-data 19935 Mar 5 20:14 license.txt
-rw-r--r-- 1 www-data www-data 7360 May 12 11:54 readme.html
-rw-r--r-- 1 www-data www-data 5032 Jan 28 03:35 wp-activate.php
drwxr-xr-x 9 www-data www-data 4096 Jun 21 16:17 wp-admin
-rw-r--r-- 1 www-data www-data 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 1476 Jan 30 21:56 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 2853 Jul 27 06:46 wp-config-sample.php
-rw-r--r-- 1 www-data www-data 3254 Jul 27 06:46 wp-config.php
drwxr-xr-x 6 www-data www-data 79 Jul 27 01:04 wp-content
-rw-r--r-- 1 www-data www-data 3286 May 24 2015 wp-cron.php
drwxr-xr-x 16 www-data www-data 8192 Jun 21 16:17 wp-includes
-rw-r--r-- 1 www-data www-data 2380 Oct 24 2013 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 3316 Nov 5 2015 wp-load.php
-rw-r--r-- 1 www-data www-data 33837 Mar 6 03:06 wp-login.php
-rw-r--r-- 1 www-data www-data 7887 Oct 6 2015 wp-mail.php
-rw-r--r-- 1 www-data www-data 13106 Feb 17 22:58 wp-settings.php
-rw-r--r-- 1 www-data www-data 28624 Jan 28 03:51 wp-signup.php
-rw-r--r-- 1 www-data www-data 4035 Nov 30 2014 wp-trackback.php
-rw-r--r-- 1 www-data www-data 3061 Oct 2 2015 xmlrpc.php

テストファイルを削除します。

/var/www/html # rm 1.txt

テストファイルは削除されました。

/var/www/html # ls -la
total 188
drwxr-xr-x 5 www-data www-data 4096 Jul 27 07:01 .
drwxr-xr-x 3 www-data www-data 17 Jul 27 06:46 ..
-rw-r--r-- 1 www-data www-data 234 Jul 27 00:00 .htaccess
-rw-r--r-- 1 www-data www-data 418 Sep 25 2013 index.php
-rw-r--r-- 1 www-data www-data 19935 Mar 5 20:14 license.txt
-rw-r--r-- 1 www-data www-data 7360 May 12 11:54 readme.html
-rw-r--r-- 1 www-data www-data 5032 Jan 28 03:35 wp-activate.php
drwxr-xr-x 9 www-data www-data 4096 Jun 21 16:17 wp-admin
-rw-r--r-- 1 www-data www-data 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 1476 Jan 30 21:56 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 2853 Jul 27 06:46 wp-config-sample.php
-rw-r--r-- 1 www-data www-data 3254 Jul 27 06:46 wp-config.php
drwxr-xr-x 6 www-data www-data 79 Jul 27 01:04 wp-content
-rw-r--r-- 1 www-data www-data 3286 May 24 2015 wp-cron.php
drwxr-xr-x 16 www-data www-data 8192 Jun 21 16:17 wp-includes
-rw-r--r-- 1 www-data www-data 2380 Oct 24 2013 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 3316 Nov 5 2015 wp-load.php
-rw-r--r-- 1 www-data www-data 33837 Mar 6 03:06 wp-login.php
-rw-r--r-- 1 www-data www-data 7887 Oct 6 2015 wp-mail.php
-rw-r--r-- 1 www-data www-data 13106 Feb 17 22:58 wp-settings.php
-rw-r--r-- 1 www-data www-data 28624 Jan 28 03:51 wp-signup.php
-rw-r--r-- 1 www-data www-data 4035 Nov 30 2014 wp-trackback.php
-rw-r--r-- 1 www-data www-data 3061 Oct 2 2015 xmlrpc.php
/var/www/html #
/var/www/html #
/var/www/html #

(Ctrl+p Ctrl+qで抜けます)

 

(7)データボリュームコンテナ経由で、リストア

リストアします。

# docker run --volumes-from wordpress_wp-data_1 -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar

【コマンドの説明】

項目 内容
docker Dockerのコマンドです
run コンテナを起動します
--volumes-from wordpress_wp-data_1 wordpress_wp-data_1というコンテナのボリュームに接続します
-v $(pwd):/backup カレントのディレクトリと、このコンテナ内部のディレクトリをつなげます
ubuntu コンテナのイメージを指定します。
tar 上記のイメージ指定に対する起動オプションとしてtarコマンドを指定します。
(通常はコンソールの場合には/bin/shを指定します。)
xvf tarのコマンドのオプションです。
/backup/backup.tar コンテナ内部のバックアップ場所を指定します。

これは、上記の-v引数によってカレントディレクトリにファイルができます。

# docker run --volumes-from wordpress_wp-data_1 -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar
var/www/html/
var/www/html/.htaccess
var/www/html/index.php
var/www/html/license.txt
var/www/html/readme.html
var/www/html/wp-admin/
var/www/html/wp-admin/about.php
(中略)
var/www/html/wp-settings.php
var/www/html/wp-signup.php
var/www/html/wp-trackback.php
var/www/html/xmlrpc.php
var/www/html/wp-config.php
var/www/html/1.txt
#

データボリュームコンテナに接続して、リストアされたテストファイルを確認します。

# docker exec -it wordpress_wp-data_1 /bin/sh
/ #
/ # cd /var/www/html
/var/www/html # ls -la
total 192
drwxr-xr-x 5 www-data www-data 4096 Jul 27 06:46 .
drwxr-xr-x 3 www-data www-data 17 Jul 27 06:46 ..
-rw-r--r-- 1 www-data www-data 234 Jul 27 00:00 .htaccess
-rw-r--r-- 1 root root 22 Jul 27 06:50 1.txt
-rw-r--r-- 1 www-data www-data 418 Sep 25 2013 index.php
-rw-r--r-- 1 www-data www-data 19935 Mar 5 20:14 license.txt
-rw-r--r-- 1 www-data www-data 7360 May 12 11:54 readme.html
-rw-r--r-- 1 www-data www-data 5032 Jan 28 03:35 wp-activate.php
drwxr-xr-x 9 www-data www-data 4096 Jun 21 16:17 wp-admin
-rw-r--r-- 1 www-data www-data 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 www-data www-data 1476 Jan 30 21:56 wp-comments-post.php
-rw-r--r-- 1 www-data www-data 2853 Jul 27 06:46 wp-config-sample.php
-rw-r--r-- 1 www-data www-data 3254 Jul 27 06:46 wp-config.php
drwxr-xr-x 6 www-data www-data 79 Jul 27 01:04 wp-content
-rw-r--r-- 1 www-data www-data 3286 May 24 2015 wp-cron.php
drwxr-xr-x 16 www-data www-data 8192 Jun 21 16:17 wp-includes
-rw-r--r-- 1 www-data www-data 2380 Oct 24 2013 wp-links-opml.php
-rw-r--r-- 1 www-data www-data 3316 Nov 5 2015 wp-load.php
-rw-r--r-- 1 www-data www-data 33837 Mar 6 03:06 wp-login.php
-rw-r--r-- 1 www-data www-data 7887 Oct 6 2015 wp-mail.php
-rw-r--r-- 1 www-data www-data 13106 Feb 17 22:58 wp-settings.php
-rw-r--r-- 1 www-data www-data 28624 Jan 28 03:51 wp-signup.php
-rw-r--r-- 1 www-data www-data 4035 Nov 30 2014 wp-trackback.php
-rw-r--r-- 1 www-data www-data 3061 Oct 2 2015 xmlrpc.php
/var/www/html # cat 1.txt
test 2016:07:27 15:50
/var/www/html #

 

この記事を書いた人

吉岡朗

Startup.Tokyo Inc代表、HackathonPost.com主宰、WordPress-News.info編集長
一般企業のサラリーマンでシステムエンジニアをしながら、ハッカソン、スタートアップ系に興味を持ちはじめ、個人メディアとして、2014年3月より、【ハッカソン・アイデアソン・起業/ビジネスコンテストのイベント情報まとめサイト「HackathonPost」」を開設。
WordPressを中心に、クラウドサービスを借りながら、50サイト以上のWordPressを運用中。
色々改造して金にならないことばかりして遊ぶエンジニア。
サイト:http://startup.tokyo/
Facebookページ:http://www.facebook.com/HackathonPost

GMOクラウドアカデミーYouTubeチャンネルはこちらから

アカデミー用バナー

メルマガ会員募集中!

アカデミーの最新情報や会員限定のお得な情報をお届けします。

メルマガ登録はこちら