前回では、Windows10+WSL2環境でDocker+MySQLを動作させていましたが、今回はM1 Apple Silicon(Arm64)版Macbook Airで動作させるところまでの備忘録。
DockerはPreview版を使う(2021年1月現在)
Macの場合、Docker Desktopをインストールする必要があるが、M1 Macではアーキテクチャーが変わっていて、正式版はまだリリースされていない。プレビュー版が以下にあるので、どうしても使いたい場合はDLする。
https://docs.docker.com/docker-for-mac/apple-m1/
ダウンロード後、コンソールからdocker、docker-composeコマンドが使えることを確認する。
> docker -v
Docker version 20.10.1, build 831ebeae96
> docker-compose -v
docker-compose version 1.27.4, build 40524192
Docker版MySQLインストール
さっそくMySQLをpullしてみると、
> docker pull mysql:8.0.23
8.0.23: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries
アーキテクチャが合ってない?のでプルできない。が、解決策が以下にありました。
https://qiita.com/tetsuro_skiing/items/b380223c2611d392620a
直接イメージのIDを指定すればプルできる。
> docker pull mysql@sha256:43bf7db32d11e75d8463a8bc077f09af5fb5b84b182b1d74124ddca633093bfa
:
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql <none> c8562eaf9d81 4 days ago 546MB
docker-compose.yml
も同様で、上記のイメージIDを指定するようにしておく。
version: '3.5'
services:
db_serv:
#image: mariadb:10.5.8
image: mysql:8.0.23
image: mysql@sha256:43bf7db32d11e75d8463a8bc077f09af5fb5b84b182b1d74124ddca633093bfa
container_name: test-db-container
:
実際にコンテナ内で作業できるか確認する。コンテナをまず起動。
> docker-compose up -d
> docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------
test-db-container docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
コンテナ内でmysqlコンソールからログインして、エンジンを確認してみる。
> docker-compose exec db_serv /bin/bash
root@test-db-server:/home# mysql --version
/usr/bin/mysql Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL)
> mysql -u user1 -p
:
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
ちゃんと動作できました。