LoginSignup
1
3

More than 1 year has passed since last update.

Docker DesktopでMySQL環境を構築する

Last updated at Posted at 2022-04-29

はじめに

Dockerを使ってMySQLの環境を構築しました。

実行環境

OS:MacOS Monterey 12.3.1
Docker:Docker Desktop for Mac 4.7.1
DB:MySQL8.0
DBツール:MySQL Workbench8.0.29 Community

Docker Desktop for Macをインストール

インストーラーをダウンロード

こちらのページからインストーラーをダウンロードします。

インストーラーを実行

ダウンロードされたDocker.dmgをダブルクリックし、アプリを「Applications」フォルダに追加します。

「"Docker"はインターネットからダウンロードされたアプリケーションです。
 開いてもよろしいですか?」
と表示されるので「開く」を選択します。

Macのパスワード認証

次に以下のメッセージが表示されます。

Docker Desktop needs privileged access.
Docker Desktop needs privileged access to install its networking components and links to the Docker apps.
You will be asked for your password.

DockerDesktopには特権アクセスが必要なのでMacのパスワードを入力します。
入力するとインストールが始まります。

インストールが完了するとDocker Desktopが起動出来きます。

ちなみにDockerのバージョンを確認する際は以下の通り

% docker version
Client:
 Cloud integration: v1.0.23
 Version:           20.10.14
 # ・・・

リソース設定を確認しておく

Docker Desktopの画面上部に設定ボタン(歯車マーク)があるので選択し、
「Resources」カテゴリを選択します。

CPUやメモリの使用量などの項目があり、必要に応じて設定します。

コンテナイメージを取得する

利用したいコンテナイメージをDocker Hubのページから探します。

注意として、コンテナイメージは誰でも公開出来るため、
特に理由が無ければ公式が出してるようなイメージを使用することが良いです。

コンテナイメージを探す

Docker HubのWebページから「MySQL」で検索します。
「Official Image」と記載されているイメージがあるのでこちらを使用してみます。

コンテナイメージを取得するためのコマンドが記載されているので、コピーします。

docker pull mysql

# ※Dockerコマンドはバージョン1.13から変わっており、
#  以下の形式が新しいコマンド形式になります。
docker image pull mysql

ターミナルでコマンドを実行するとコンテナイメージがダウンロードされます。

% docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
4be315f6562f: Pull complete 
# ・・・
752752efdaea: Pull complete 
Digest: sha256:2dafe3f044f140ec6c07716d34f0b317b98f8e251435abd347951699f7aa3904
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

ダウンロードが完了すると、Docker DesktopのImages画面で「mysql」を確認できます。

コンテナを作成

GUIからコンテナを作成する(失敗)

Images画面に追加された「mysql」にフォーカスを当てると「RUN」ボタンが出現します。
押下するとオプション設定を指定出来ます。

今回は以下の内容を設定
Container Name
 →mysql-container
Ports(Local Host)
 →3306
Volumes(Host Path)
 →/Users/xxx/docker/mysql-container/volumes
Volumes(Container Path)
 →/var/lib/mysql

コンテナを起動! と思ったら以上終了。

Containers/Apps画面で作成したコンテナをダブルクリックし、起動ログを見てみます。

    You need to specify one of the following:
    - MYSQL_ROOT_PASSWORD
    - MYSQL_ALLOW_EMPTY_PASSWORD
    - MYSQL_RANDOM_ROOT_PASSWORD

引数としてルートパスワードなどが必要だったようです。

見直してみましたが、Docker Desktopの画面上に指定出来そうなところが見当たりませんでした。
なのでコマンドからの起動を試みます。

CUIからコンテナを作成・起動・接続確認

Docker HubのMySQLのページに起動用のDockerコマンドのサンプルを記載されてありました。
参考にして以下のコマンドを実行します。

% docker run --name mysql-container -p 3306:3306 -v /Users/xxx/docker/mysql-container/volumes:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.0

最終的なオプションの設定は以下の通りです。

オプション 設定値 説明
--name  mysql-container コンテナ名
-p  3306:3306 実機とコンテナのポートのバインディング
実機のポート/コンテナのポート
-v  略)〜/volumes:/var/lib/mysql ボリュームのバインディング
今回はバインドマウントを使用してます
-e  MYSQL_ROOT_PASSWORD=my-secret-pw rootユーザーのパスワード
-d  - コンテナをバックグラウンドで実行
-  mysql:8.0 サポートしているバージョンのタグ
他にlatestなどがあります。

Containers/Apps画面でmysql-containerが「RUNNING」状態であれば起動しており、
MySQL Workbench等で接続を確認出来れば成功です。

ちなみにMySQL Workbenchで接続後、文字コードを確認してみると以下の通りでした。

show variables like '%char%';
Variable_name, Value
'character_set_client','utf8mb4'
'character_set_connection','utf8mb4'
'character_set_database','utf8mb4'
'character_set_filesystem','binary'
'character_set_results','utf8mb4'
'character_set_server','utf8mb4'
'character_set_system','utf8mb3'
'character_sets_dir','/usr/share/mysql-8.0/charsets/'

参考文献

1
3
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
3