Help us understand the problem. What is going on with this article?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした