LoginSignup
34
42

More than 5 years have passed since last update.

dockerで、いい感じでMySQL環境を作る

Last updated at Posted at 2016-02-24

データコンテナ作成

$ docker run -d -v /var/lib/mysql --name localStorage busybox true
オプション / パラメータ 内容
-d コンテナのバックグラウンド実行指定。
-v /var/lib/mysql ホストにマウントするコンテナ側のディレクトリ(MySQLデータディレクトリ)。
--name localStorage ストレージコンテナの名前。
busybox データコンテナ用超軽量イメージ
true busybox内で実行するコマンド(コンテナとして存在するだけなので、何もせずに正常終了させる)。

データコンテナを使うコンテナ作成

$ docker run -d --volumes-from localStorage -e MYSQL_ROOT_PASSWORD=root --name sampleDB mysql:5.6
オプション / パラメータ 内容
-d 同上。
--volumes-from localStorage ストレージコンテナ指定。さっき作ったデータコンテナを今からrunするコンテナにマウントする。
-e MYSQL_ROOT_PASSWORD=root MySQL rootパスワード設定(rootの部分はパスワード文字列そのもの)。
--name sampleDB runするコンテナの名前。
mysql mysqlイメージの選択。

因みに、

$ docker run -d --volumes-from localStorage -v /host/path/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --name sampleDB mysql

みたいにすると、

オプション / パラメータ 内容
-v /host/path/conf:/etc/mysql/conf.d ホスト上の /host/path/conf/ をコンテナの /etc/mysql/conf.d/ にマウントしてくれる。

となります。ローカルコンフィグレーションには便利。nfsマウントのdocker版みたいな感じ(逆向き)。

mysqlのコンテナに接続

$ docker ps -l -q
0f1e506b00ec
$ docker exec -it 0f1e506b00ec bash
root@0f1e506b00ec:/#

バックアップをホスト側に行う

sampleDBの起動中に行う。

$ docker run --rm --volumes-from localStorage -v $(pwd):/backup busybox tar cvf /backup/backup.tar /var/lib/mysql
オプション / パラメータ 内容
--rm プロセスが終わると、その後直ぐにコンテナも終了する。
--volumes-from localStorage 起動中のデータコンテナ名。
-v $(pwd)/backup:/backup ホスト上の ./backup/ を、コンテナ上の /backup/ にマウントする。
busybox データコンテナ用超軽量イメージ。
tar cvf /backup/backup.tar /var/lib/mysql コンテナ上の /var/lib/mysql/ を tar cvf して、/backup/backup.tar に書き出す(つまり、マウント先のホスト上の ./backup/backup.tar へ書き出す)。

ホストにあるバックアップからのリストア

$ docker run --rm --volumes-from new_localStorage -v $(pwd):/backup busybox cd /var/lib/mysql && tar xvf /backup/backup.tar
オプション / パラメータ 内容
--rm プロセスが終わると、その後直ぐにコンテナも終了する。
--volumes-from localStorage 起動中のデータコンテナ名。
-v $(pwd):/backup ホスト上の . を、コンテナ上の /backup/ にマウントする。
busybox データコンテナ用超軽量イメージ。
cd /var/lib/mysql && tar xvf /backup/backup.tar コンテナ上の /var/lib/mysql/ にcdで移動し、 tar xvf で/backup/backup.tar を解凍。

おまけ

エイリアスを切った感じでdockerコマンドの私的まとめ。

$ alias CONTAINER_ID='docker ps -l -q' #現在動作中
docker command 内容
docker stop CONTAINER_ID コンテナを停止する
docker start CONTAINER_ID コンテナを起動する
docker restart CONTAINER_ID コンテナを再起動する
docker attach CONTAINER_ID 起動中のコンテナに接続する
docker cp CONTAINER_ID:/etc/passwd . コンテナ内のファイルをホストにコピーする
dockr rm CONTAINER_ID コンテナを削除する
docker inspect CONTAINER_ID コンテナの情報(IPなど)を表示する
docker logs CONTAINER_ID コンテナのログを表示する
docker top CONTAINER_ID コンテナのプロセスを表示する
docker command 内容
docker ps 起動中のコンテナを表示する(停止中のコンテナも表示するには -a オプション)
docker rm `docker ps -a -q` コンテナの全削除(実行中のコンテナはエラーが出る?)
34
42
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
42