前回、DockerでWordPress環境を構築した。Dockerは現在も開発が続いており、やや不安定なソフトウェアという印象がある。そういう事情もあり、Docker内のWordPress環境のデータをバックアップ&リストアできるようにしておく。

・参考:Manage data in containers

Volumeの内容を見る

Volumeの確認

まずはVolumeが存在することを確認する。

$ docker volume ls
DRIVER VOLUME NAME
local wordpress_db_data
local wordpress_phpmyadmin_data
local wordpress_www_data

ここでは、3つのVolumeがあることが確認できた。

今回バックアップを行いたいのは、以下の2つである。

・wordpress_www_data

・wordpress_db_data

Volumeの内容を見る

Volumeの内容を見るためにコンテナを作成する必要がある。以下のコマンドで、Volumeをマウントした状態のコンテナを起動する。

$ docker run -it –name wp_www_dc -v wordpress_www_data:/www_data ubuntu /bin/bash

root@6765f5b2c015:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr www_data

$ docker run -it –name wp_db_dc -v wordpress_db_data:/db_data ubuntu /bin/bash

root@c7496a7fa129:/# ls
bin db_data etc lib media opt root sbin sys usr
boot dev home lib64 mnt proc run srv tmp var

docker runコマンドでコンテナを作成する。-itオプションは起動しっぱなしにできるオプション。–nameオプションでコンテナに名前をつける。-vオプションで、Volumeを特定のパスにマウントする。

Volume「wordpress_www_data」は、/www_dataにマウントされて起動される。1つ目のdocker runコマンドの後のlsコマンドで、www_dataが確認できる。

Volumeの内容を見る(次回から)

先ほどのコマンドでコンテナができたので、次回からは以下のコマンドでコンテナを起動すれば良い。

$ docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7496a7fa129 ubuntu “/bin/bash” 14 minutes ago Exited (0) 13 minutes ago wp_db_dc
6765f5b2c015 ubuntu “/bin/bash” 12 days ago Exited (0) 7 minutes ago wp_www_dc

$ docker start -i wp_www_dc

$ docker start -i wp_db_dc

Volumeのデータをバックアップ

Volumeのデータをバックアップする。べたな方法であるが、現在のローカルPCのディレクトリを/backupにマウントして、バックアップしたいディレクトをtarで固めて/backupに出力するだけである。

$ docker run –rm –volumes-from wp_www_dc -v $(pwd):/backup ubuntu tar cvf /backup/backup_www.tar /www_data

$ docker run –rm –volumes-from wp_db_dc -v $(pwd):/backup ubuntu tar cvf /backup/backup_db.tar /db_data

MySQLのデータは、phpMyAdminからデータのエクスポートを行うのも良いだろう。

Volumeのデータをリストア

Volumeのデータをリストアするときも同じで、コンテナを作成し、先ほどのtarファイルを展開して配置するだけ。

$ docker run -it –name wp_www_dc2 -v wordpress_www_data:/www_data ubuntu /bin/bash

$ docker start -i wp_www_dc2

$ docker run –rm –volumes-from wp_www_dc2 -v $(pwd):/backup ubuntu bash -c “cd /www_data && tar xvf /backup/backup_www.tar –strip 1”

まとめ

今後、主流となっていくであろう2つの技術(AWSとDocker)を利用して、WordPressのブログを安く維持できる仕組みを構築した。今後、AWSはさらに便利に安くなっていくだろうし、勉強する価値がある。また、Dockerの動向も目が離せない。

WordPressのブログをAWS S3で公開する

DockerでWordPress環境を構築する

Docker上のWordPressデータのバックアップ&リストア