概要
MySQLをDockerを使って簡単に用意してみる
DockerHubで公式のMySQLイメージが公開されているのでそれを使うこととする
前提として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ファイルを読み込ませたりなどもできる
コメントを書く
コメント一覧