はじめに
業務でDockerDesktopにMySQLのコンテナを作成する機会がありましたので、手順を書き起こそうと思います。
今回は検証用でサクッとMySQLのコンテナを作成することが目的になります。
運用するために作るものではないため、そこはご了承下さい。
前提
- MacBook Pro 2020年モデルを使用します。(macOS Monterey バージョン12.3.1)
- Dockerのバージョン(20.10.0)
% docker -v
Docker version 20.10.0, build 7287ab3
%
Docker Desktopに関しては、既に導入済みであることが前提になります。
今回の構成
ざっくりになりますが、以下になります。
作業手順(コンテナ作成〜MySQLのログイン迄)
以下の段取りでやっていきたいと思います。
①ボリューム作成・確認
②コンテナ作成・確認
①ボリューム作成・確認
- ボリューム作成
コンテナ内で作成したデータを永続化するためのボリュームを作成します。
※コンテナを削除しても、保存したデータは消えないようにするためのものになります。
docker volume create <ボリューム名>
% docker volume create db_storage
db_storage
%
- ボリューム確認
ボリュームが作成されていることを確認します。
docker volume list
% docker volume list
DRIVER VOLUME NAME
local db_storage
%
②コンテナ作成・確認
- コンテナ作成
docker run -d --name <コンテナ名> -e MYSQL_DATABASE=<データベース名> -e MYSQL_ROOT_PASSWORD=<rootユーザーのパスワード> -v <作成したボリューム名>:/<ボリュームのパス> -p <外部向けポート番号>:<内部向けポート番号> mysql:<バージョン>
今回実行する用でカスタマイズしたものは以下になります。
docker run -d --name db_container -e MYSQL_DATABASE=db_name -e MYSQL_ROOT_PASSWORD=secret -v db_storage:/var/lib/mysql -p 3305:3306 mysql:5.7
% docker run -d --name db_container -e MYSQL_DATABASE=db_name -e MYSQL_ROOT_PASSWORD=secret -v db_storage:/var/lib/mysql -p 3305:3306 mysql:5.7
dc8c5e3eff3e682f48a29cd41c4703386093017bcc3a4a31724d43cb2320a269
%
実行例で指定している項目については、以下になります。
※別の機会でオプションについては詳しく解説します。
項目 | 設定 | 例 |
---|---|---|
コンテナ名 | db_container | --name db_container |
データベース名 | db_name | MYSQL_DATABASE=db_name |
管理者パスワード | secret | MYSQL_ROOT_PASSWORD=secret |
ボリューム | ストレージ:db_storage 指定パス:/var/lib/mysql |
-v db_storage:/var/lib/mysql |
外部向けポート番号 内部向けポート番号 |
3305 3306 |
-p 3305:3306 |
MySQLのバージョン | 5.7 | mysql:5.7 |
MySQLのコンテナイメージのバージョンについては、以下サイトをご覧下さい。
- コンテナ確認
docker ps
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc8c5e3eff3e mysql:5.7 "docker-entrypoint.s…" 18 minutes ago Up 18 minutes 33060/tcp, 0.0.0.0:3305->3306/tcp db_container
%
③MySQLログイン確認
docker exec -it db_container /usr/bin/mysql -u root -p
% docker exec -it db_container /usr/bin/mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.38 MySQL Community Server (GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
※MySQLから抜ける場合は、以下コマンドを入力する。
quit
mysql> quit
Bye
%
削除(作業完了後)
作業が完了して削除する場合は、以下の段取りで後始末をしていきます。
①コンテナ削除
②ボリューム削除
①コンテナ削除
db_container
を削除します。
- コンテナ削除
docker rm -f db_container
% docker rm -f db_container
db_container
%
- コンテナ確認
docker ps -a
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
%
②ボリューム削除
ボリュームdb_storage
を削除します。
- ボリューム削除
docker volume rm db_storage
% docker volume rm db_storage
db_storage
%
- ボリューム確認
docker volume list
% docker volume list
DRIVER VOLUME NAME
%
さいごに
業務でDockerやMySQLについて触る機会がありそうなため、今後もいろいろ投稿していこうと思います。
直近まではMicrosoft系の製品ばかり触っていました(調査していました)。(例:AzureADやIntune等)
そのため、全く毛色の違う技術ではありますが、しっかりとやっていきます。
参考記事