WordPressやNexcloudなどのDockerを利用する際に、データーベースサーバーが必要です。本記事では、DockerのデーターベースとしてMySQLを利用して仮想イメージを起動する方法を紹介します。
Dockerのインストール
本記事では、すでにDockerが次の方法でインストールされている前提で話を進めております。またDockerをインストールされていない場合は以下の記事を参考にインストールを行っておいてください。
MySQLをDockerで利用する方法
本記事では以下の環境でDockerをインストールします。
- Docker (Linux Ubuntu 18.04 LTS)
バージョン 20.21 - mySQL
バージョン 5.7
MySQLの最新版イメージを「Docker Hub」からダウンロードし利用します。
https://hub.docker.com/_/mysql
$ sudo docker pull mysql
にて最新版をダウンロードしておきます。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest a3a2968869cf 4 days ago 538MB
nextcloud latest eff70b1472d7 5 days ago 994MB
本記事では、このMySQLのイメージを使用してDockerの基本的なコマンドの使い方を解説します。
# | コマンド | 意味 |
---|---|---|
1 | docker pull | docker hubでイメージのダウンロード |
2 | docker run | dockerのコンテナ化 |
3 | docker ps | 実行中コンテナのリスト |
4 | doker image | docker hubでダウンロードしたイメージリスト |
5 | docker stop | コンテナの停止 |
6 | docker rm | コンテナの削除 |
MySQLのコンテナの起動と停止
$ sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=(passwd) -d mysql
cd40147de5fcf91245b2ced3f0da483db39c4638a91a6716d376b355d2529c62
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd40147de5fc mysql "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp some-mysql
6af0d5c90363 nextcloud "/entrypoint.sh apac…" 2 days ago Up 2 days 0.0.0.0:8080->80/tcp, :::8080->80/tcp friendly_banach
STATUSが「up」となっているため、駆動しています。
$ % sudo docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest a3a2968869cf 4 days ago 538MB
nextcloud latest eff70b1472d7 5 days ago 994MB
削除方法は以下の通りです。Dockerのコンテナを「docker stop」で止めからでないと、「docker rm」で削除できません。
$ sudo docker stop some-mysql
$ sudo docker rm some-mysql
またイメージ内に入るには以下のコマンドを入力します。
$ sudo docker exec -it cd40147de5fc /bin/bash
Docker内でテキストエディタ等をインストールするためには、「apt-get update」コマンドを入力後に apt-get install でソフトをインストールします。
$ apt-get update
$ apt-get install vim
Docker用のnetworkの作成
次にDockerのコンテナ同士で利用可能なネットワークを作成します。
$ sudo docker network create network1
70e825fbadf7ce7aab8eae4d1cfc5ac48d5d649a45429aa3a00c2601c58ec3f7
Dockerのネットワークリストを確認して作成できたか確認します。
$ sudo docker network ls
NETWORK ID NAME DRIVER SCOPE
f2780d0f51c7 bridge bridge local
2507fa523fea host host local
70e825fbadf7 network1 bridge local
8f5f8a931f18 none null local
Docker用のMySQLの起動
以下のようにmysqlを起動します。
$ sudo docker run --name some-mysql --net=network1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=ownclouddb -e MYSQL_USER=owncloudur -e MYSQL_PASSWORD=onwcloudpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --defaut-authentication-plugin=myrootpass
mySQLのデータベース設定
- MYSQL_ROOT_PASSWORD=myrootpass
- MYSQL_DATABASE=ownclouddb
- MYSQL_USER=owncloudur
- MYSQL_PASSWORD=onwcloudpass
mySQLのデータベース用文字列設定
- character-set-server=utf8mb4
- collation-server=utf8mb4_unicode_ci
- defaut-authentication-plugin=myrootpass
としておきます。
次に、コンテナ内のbashプロンプト上でmysqlを立ち上げます。
$ bash-4.4# mysql -u root -p
ここで、パスワードが求められますが、上記で「MYSQL_ROOT_PASSWORD=myrootpass」と指定してありますのでこれを利用します。
これ以降は普通のmySQLの設定と同じです。
細かいmySQLの利用方法については以下の記事をご参照ください。
まとめ
本記事のまとめは、
(1) Docker pull mysql→Docker rum mysql
(2) Docker stop mysql→Docker rm mysql
という手続きが必要である。
コメント