LoginSignup
1
1

More than 1 year has passed since last update.

【Docker】Docker DesktopにMySQLのコンテナを作成します。

Last updated at Posted at 2022-05-14

はじめに

業務でDockerDesktopにMySQLのコンテナを作成する機会がありましたので、手順を書き起こそうと思います。

今回は検証用でサクッとMySQLのコンテナを作成することが目的になります。
運用するために作るものではないため、そこはご了承下さい。

前提

  • MacBook Pro 2020年モデルを使用します。(macOS Monterey バージョン12.3.1)

スクリーンショット 2022-04-12 16.47.38.png

  • Dockerのバージョン(20.10.0)
バージョン
% docker -v
Docker version 20.10.0, build 7287ab3
%

Docker Desktopに関しては、既に導入済みであることが前提になります。

今回の構成

ざっくりになりますが、以下になります。

MySQL.drawio.png

作業手順(コンテナ作成〜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等)
そのため、全く毛色の違う技術ではありますが、しっかりとやっていきます。

参考記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1