Edited at

dockerでmysqlを使う

More than 1 year has passed since last update.

公式のmysqlを使えるようにするのにハマったのでメモ。

※Dockerのインストールが古かったので新しいリンクに変更しました。


Docker for mac install

http://qiita.com/astrsk_hori/items/a8bc8f3883d5b76c51d3


公式のmysqlイメージを使う

https://github.com/docker-library/docs/tree/master/mysql

docker pull mysql

docker run --name mysql -e MYSQL_ROOT_PASSWORD=mysql -d -p 3306:3306 mysql

# 接続確認 passwordはmysqlになります。
mysql -h $(boot2docker ip) -uroot -p

上記でいきなり使える。


コンテナに接続したい場合。

CONTAINER IDを確認

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5edc5732d78 mysql:latest "/entrypoint.sh mysq 49 minutes ago Up 33 minutes 0.0.0.0:3306->3306/tcp mysql

docker exec コマンドで接続。

$ docker exec -it e5edc5732d78 bash

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


公式のmysqlを永続化して使う


まず先ほど作成したコンテナの破棄。

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5edc5732d78 mysql:latest "/entrypoint.sh mysq 49 minutes ago Up 33 minutes 0.0.0.0:3306->3306/tcp mysql

# 停止
docker stop e5edc5732d78

# 削除
docker rm e5edc5732d78


データボリュームコンテナの作成

docker pull busybox

# 永続化のためのデータ領域を作成
docker run -v /var/lib/mysql --name mysql_data busybox


マウントして起動。

docker run --volumes-from mysql_data --name mysql -e MYSQL_ROOT_PASSWORD=mysql -d -p 3306:3306 mysql

以上で永続化終わり。簡単。だけどハマった。。。


永続化確認


  1. database 作成

  2. docker stop CONTAINER_ID #mysqlのコンテナID

  3. docker rm CONTAINER_ID #mysqlのコンテナID

  4. もう一回docker run

  5. docker exec -it CONTAINER_ID bash #再作成したmysqlのコンテナID

  6. mysqlアクセスして最初に作成したDBがあればOK


おまけ


アプリ用のコンテナから先ほど作成したmysqlコンテナに接続する。

docker run --name NAME -h HOSTNAME --volumes-from mysql_data --link mysql:ALIAS_MYSQL -i -t -d HOGE_APP

今、立ち上げたコンテナからmysqlコンテナに繋ぐには以下。

mysql -h ALIAS_MYSQL -uroot -p

大文字の箇所を適宜変更してください。


docker commands

docker build イメージを作成。

docker run コンテナを作成。

docker start コンテナを起動。

docker stop コンテナを停止。

docker rm コンテナを削除。

docker rmi イメージを削除。

docker ps コンテナの確認。