DockerでMySQLを構築
まずはMySQLをdockerのみで構築してみます。
runコマンドでコンテナに名前をつけてmysqlイメージからコンテナを起動しています。
-eオプションは環境変数を設定し、-dはdetachといいバックグラウンドでコンテナを起動します。
$ docker run --name test_mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=test -e MYSQL_PASSWORD=test -e MYSQL_DATABASE=test -d mysql:5.7.22 34d348d77124d2e352813cf04f4cd03c9826c6742e1591faa7ca3a3942f89fc7 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 34d348d77124 mysql "docker-entrypoint.s…" Less than a second ago Up 2 seconds 3306/tcp test_mysql
起動したら下記コマンドでコンテナ内に入ります。
envコマンドで起動時に設定した環境変数を確認できます。mysqlコマンドで起動時に設定したuserとpasswordでmysqlにログインできることを確認できます。
$ docker exec -it test_mysql /bin/sh # env HOSTNAME=34d348d77124 MYSQL_MAJOR=8.0 HOME=/root MYSQL_ROOT_PASSWORD=root TERM=xterm MYSQL_PASSWORD=test PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MYSQL_VERSION=8.0.11-1debian9 MYSQL_USER=test GOSU_VERSION=1.7 PWD=/ MYSQL_DATABASE=test $ mysql -utest -ptest
起動したコンテナは下記コマンドで停止できます。
$ docker stop 34d348d77124
docker-composeで起動する
docker runコマンドでmysqlのコンテナを起動しましたが、これだと毎回いろんなオプションをつけてコマンドを実行しないといけないので面倒になってしまします。
そこでdocker-composeを使います。
docker-composeコマンドはdocker-compose.ymlファイルにコンテナの設定を定義することができ、そのファイルを元にコンテナを起動することができるようになります。
上記mysqlのdockerコマンドをdocker-compose.ymlに設定すると下記のようになります。これで管理しやすくなりますね。
version: '3' services: db: image: mysql:5.7.22 environment: MYSQL_ROOT_PASSWORD: root MYSQL_USER: test MYSQL_PASSWORD: test MYSQL_DATABASE: test
docker-compose.ymlを定義したら同じディレクトリで下記コマンドを実行することでコンテナを起動できます。-dオプションをつけることでバックグラウンドで起動できます。
$ dokcer-compose up -d
プロセスは下記で確認できます。
$ docker-compose ps Name Command State Ports ------------------------------------------------------------------- test_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
ホストOSからコンテナのmysqlに接続する
これまではコンテナに入ってからmysqlに接続していましたが、ホストOSからも接続できるようにdocker-compose.ymlを修正します。portsはホストマシンポート:コンテナのポートとなっています。
version: '3' services: db: image: mysql:5.7.22 ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root MYSQL_USER: test MYSQL_PASSWORD: test MYSQL_DATABASE: test
接続するときは明示的に127.0.0.1を指定します。
$ mysql -h127.0.0.1 -utest -ptest
おすすめ書籍
出版されてから少し時間が経っていますが、Dockerの基本は変わらないので非常に勉強になります。
本書はDockerが利用される環境や背景を説明し、導入前のシステム設計、Dockerの基本的な利用方法、Dockerfileによる自動化の手法、管理・監視ツールについて、実際に操作をしながら解説されています。
また、Docker周辺のシステム環境として、Atomic Host、CoreOSといったコンテナ運用OSや、より複雑な運用環境で求められる、KubernetesやDocker Swarmによるマルチホストやクラスタシステムについても、テスト環境を構築しながら解説されいるので手を動かしながら学ぶことができます。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す