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は公開されません

※ コメントは承認されると下記に表示されます

コメント一覧

最近の投稿

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

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

Netlify Formsを使ってブログサイトにコメント機能を追加する方法を調べたので紹介 Netlify FormsはNetlifyに標準機能として用意されているフォーム機能 サーバレスなので別途コメント用にサーバを用意する必要がなくHTMLを埋め込むだけで準備できる

TypeScriptの入門の入門チートシート 型の種類や使い方についてまとめていくだけでなく、 TypeScriptについてや必要性などについてもまとめることでこのページでTypeScriptをざっくり理解できる程度の内容を目指す

NetlifyのFormsやSplit Testing、Functionsについて使い方をまとめる FormsはNetlifyに標準機能として用意されているフォーム機能でコメント保存用にサーバを用意する必要がない Split TestingはGitHubのブランチをベースにしたA/Bテストを行うための機能のことで、FunctionsはNetlifyでAWS Lambdaを使うことができる

カテゴリ一覧

タグ一覧