LoginSignup
1
1

More than 1 year has passed since last update.

DockerよりMySQLを使用する

Last updated at Posted at 2022-03-23

Dockerを通じてMySQLを使⽤するための起動や使⽤方法について記録しました。

環境

  • macOS Big Sur 11.1 (Silicon m1 chip)
  • Docker 20.10.6

事前準備

  • MySQL Workbench

MySQL Workbench は、データベースアーキテクト、開発者、DBA のための統合ビジュアルツールです。(公式サイトより)

インストールの仕方は主に二つあります:

  1. 公式サイトで提供されたインストーラにてインストールします。
  2. macOSの場合は、homebrewでのインストールが可能です。

Docker環境でDBに接続する手順(MySQL)

MySQLのイメージファイルをpullするには、MySQLのDocker Hub使用したいバージョンのTagを指定します。

M1 Macを使っているので CPU アーキテクチャは ARM ですが、公式リファレンスにも、「Intel イメージの実行には、エミュレーションのもとで--platform linux/amd64をつけて実行することが必要です。 特に mysql イメージは ARM64 向けには利用できません。 これに対する当面の対処としては mariadb イメージを利用してください。」という記述があります。色々と調べたら、この記事によりplatformlinux/x86_64 に指定することでミュレーションとして動作することが解りましたので、この方式で進めます。

$ docker pull  --platform linux/x86_64 mysql:8  
8: Pulling from library/mysql
15115158dd02: Pull complete 
d733f6778b18: Pull complete 
1cc7a6c74a04: Pull complete 
c4364028a805: Pull complete 
82887163f0f6: Pull complete 
097bfae26e7a: Pull complete 
e1b044d6a24f: Pull complete 
cd2978bd4d12: Pull complete 
28bce5cc1677: Pull complete 
907b6d695760: Pull complete 
c5049403458b: Pull complete 
f360718d6f4e: Pull complete 
Digest: sha256:0eb33f0094ef5351639d9d9847c963ee9f22f5631cde046babd4ec239aaeaf06
Status: Downloaded newer image for mysql:8
docker.io/library/mysql:8

イメージがうまくpullされたか確認します。

$ docker images  
REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
mysql                         8         c1558761f285   3 days ago     519MB

作業用ディレクタリを作成します。

$ mkdir docker_mysql
$ cd  docker_mysql

先ほどpullしたMySQLイメージでコンテナを回すため、作業用ディレクタリに以下のYAMLファイル(docker-compose.yml)を作成ます。

# docker-compose.ymlのバージョン
version: "3.8" 

# services以下にmysql8コンテナの設定を書く 
# services.mysql8.image: 使用するイメージ名称。
# services.mysql8.container_name: コンテナ名称。
# services.mysql8.platform: M1 Macで起動できるように linux/x86_64 を指定する。
# services.mysql8.volumes: マウント・パス
# services.mysql8.environment: 環境変数
# services.mysql8.ports: 公開用のポート
services:
  mysql8: 
    image: mysql:8 
    container_name: mysql8  
    platform: linux/x86_64 
    volumes:
      - ~/mysql-docker-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 12345    
      MYSQL_DATABASE: mydb          
    ports:
      - "3306:3306"

services.environment.MYSQL_ROOT_PASSWORDは接続際に使用するパスワードです。

YAMLファイルを作成したら、docker-composeでコンテナーをYAMLファイルに書いてあった設定の通りに起動します。

$ docker-compose up -d 
Creating network "docker_mysql_default" with the default driver
Creating mysql8 ... done

コンテナーがうまく起動されたか確認します。以下の結果が表⽰されたらDocker環境のDBにの接続する準備は完了です。

$ docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                                                  NAMES
8583e916916e   mysql:8   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql8

以下のコマンドでdocker-compose.ymlで設定したパスワードで接続し、MySQLモニターに⼊ります。

$ docker exec -it mysql8 mysql -u root -p
Enter password: 12345
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28 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> 

これでDBへの接続が完了です。

MySQL workbenchの使用

コンテナーが起動されたら、MySQL Workbenchを起動し、ポート3306(YAMLファイルに設定したポート)に接続してください。MySQL Workbenchの起動画面が表示されます。
001.jpg

DB接続にはYAMLファイルに設定したパスワードを入力します。
002.jpg

OKをクリックしたら、MySQL Workbenchが使えます。

コンテナの停止、削除

コンテナを停止するときには以下のコマンドを入力します。

$ docker stop mysql8

コンテナを削除するには以下のコマンドを入力します。

$ docker rm mysql8

参考サイト一覧

https://phoenixnap.com/kb/mysql-docker-container
https://matthung0807.blogspot.com/2020/08/docker-mysql.html

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