DockerでMySQL5.7を簡単に試してみる

Published: 2017年1月2日 by tomsato

概要

MySQLをDockerを使って簡単に用意してみる
DockerHubで公式のMySQLイメージが公開されているのでそれを使うこととする

前提としてDockerが使えるところまでは終わっていること

参考:Dockerコマンドを学ぶ

環境構築

今回のLinux検証環境

$ cat /etc/redhat-release
CentOS release 6.8 (Final)

DockerHubにある公式MySQLイメージをpullする

// 容量が数GBあることに注意
$ docker pull mysql:5.7

Dockerの考え方として1つのプロセスで1つのコンテナが推奨されているため
mysqldが起動させるコンテナとそれに接続するためのクライアントコンテナの2つを作成する

// ①
// -e MYSQL_ROOT_PASSWORD=secretは初期rootパスワードを指定
// -dはバックグラウンドで起動するオプション
// --name mydbはコンテナの名前
// mysql:5.7はコンテナを作成する時の元となるイメージ
$ docker run --name mydb -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7

// ②
// --link mydbで連携するコンテナを指定している
// --itは、iオプションでコンテナの標準入力へのアタッチ。tオプションはttyの割り当て。つまりコンテナの中に入れるようになる。
// /bin/bashはコンテナ起動後にbashシェルを起動させる
$ docker run -d --name dbclient --link mydb -it mysql:5.7 /bin/bash

2つのコンテナが作成されたはず

$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54b5b85c7686 mysql:5.7 "docker-entrypoint.s 5 minutes ago Up 1 seconds 3306/tcp dbclient
c355edcfd9b5 mysql:5.7 "docker-entrypoint.s 9 minutes ago Up 9 minutes 3306/tcp mydb

クライアントにアタッチしてみる

// 正確にはdocker startでコンテナを起動
// -iで起動と同時にコンテナへアタッチということをしている
$ docker start -i 54b5b85c7686
root@54b5b85c7686:/#
root@54b5b85c7686:/# env
... envコマンドで環境変数一覧を表示できる ...

// MySQLにログインできる
root@54b5b85c7686:/# mysql -uroot -psecret -h $MYDB_PORT_3306_TCP_ADDR
...
Server version: 5.7.17 MySQL Community Server (GPL)
...
mysql>

このようにすることでコンテナ間を連携したりMySQLを試すことができる

また今回は特に必要性がなかったため紹介しなかったが
docker runする時にオプションを指定するとついでにアカウントを作成したりDBをCREATEすることができる
また用意したmy.cnf(設定ファイル)を読ませたり初回起動時にSQLファイルを読み込ませたりなどもできる

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧