データコンテナ作成
$ 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` |
コンテナの全削除(実行中のコンテナはエラーが出る?) |