dockerでmysqlを使う

  • 145
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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

boot2docker install

http://blog.co-mit.com/post/24/MacにDockerをインストールして使ってみました

上記を参照してインストール。

boot2docker start

公式の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 コンテナの確認。
boot2docker ip ホストのIPアドレス表示。