465
515

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

dockerでmysqlを使う

Last updated at Posted at 2015-05-28

この記事はもう随分古いので注意してください。
mysql8.0のdocker-comose.ymlを作成したので新しいmysqlを使う方はそちらを参照してください。

dockerでmysql8を使う

### ここから古いです。 ###

公式のmysqlを使えるようにするのにハマったのでメモ。
※Dockerのインストールが古かったので新しいリンクに変更しました。

Docker for mac install

公式の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 コンテナの確認。

465
515
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
465
515

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?