Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
506
Help us understand the problem. What is going on with this article?
@astrsk_hori

dockerでmysqlを使う

More than 3 years have passed since last update.

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

506
Help us understand the problem. What is going on with this article?
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.
Sign Up
If you already have a Qiita account Login
506
Help us understand the problem. What is going on with this article?