この記事はもう随分古いので注意してください。
mysql8.0のdocker-comose.ymlを作成したので新しいmysqlを使う方はそちらを参照してください。
### ここから古いです。 ###
公式の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
以上で永続化終わり。簡単。だけどハマった。。。
永続化確認
- database 作成
- docker stop CONTAINER_ID #mysqlのコンテナID
- docker rm CONTAINER_ID #mysqlのコンテナID
- もう一回docker run
- docker exec -it CONTAINER_ID bash #再作成したmysqlのコンテナID
- 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
コンテナの確認。