0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker DesktopでMySQL5.7のコンテナが起動できない場合の対処法

Last updated at Posted at 2025-01-13

環境

  • MacBook Air 2020 Apple M1
  • macOS: Monterey 12.7.6
  • Docker Desktop v4.37.2
  • Dockerイメージ: mysql:5.7

起こったこと

Docker Desktop4.37.2で $ docker-compose up -dをするも、なぜかMySQL 5.7のコンテナだけ起動できませんでした。

# コンテナを起動
$ docker-compose up -d
[+] Running 8/8
 ✔ Network example_default          Created                                                                                                                                      0.1s
 ✔ Volume "example_php-fpm-socket"  Created                                                                                                                                      0.0s
 ✔ Volume "example_db-store"        Created                                                                                                                                      0.0s
 ✔ Container example-web                                 Started                                                                                                                                      2.3s
 ✔ Container example-node                                Started                                                                                                                                      2.4s
 ✔ Container example-db                                  Started                                                                                                                                      2.4s
 ✔ Container example-app                                 Started                                                                                                                                      2.3s
 ✔ Container example-https                               Started

# コンテナが起動しているか確認
 $ docker-compose ps
NAME             IMAGE                               COMMAND                   SERVICE        CREATED         STATUS                   PORTS
example-app     example-app   "docker-php-entrypoi…"   app            8 seconds ago   Up 6 seconds             9000/tcp
example-https   steveltn/https-portal:1             "/init"                   https-portal   8 seconds ago   Up 5 seconds (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp
example-node    node:14.2-buster                    "docker-entrypoint.s…"   node           8 seconds ago   Up 6 seconds
example-web     example-web   "/docker-entrypoint.…"   web            8 seconds ago   Up 6 seconds             80/tcp

=> $ docker-compose psの結果にdbコンテナexample-dbだけが存在しません。。

調査

$ docker-compose logs db でdbコンテナのログを確認。

$ docker-compose logs db
example-db  | 2025-01-13 03:03:52+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
..省略..
# 「qemu」に注目
example-db  | qemu: uncaught target signal 11 (Segmentation fault) - core dumped

Segmentation faultでコケていることがわかり、qemuのエラーメッセージを頼りにこちらの記事に辿り着きました↓

原因については以下の通り記載されていました。

MySQL 5.7の公式Dockerイメージにはarm版が存在せず、amd版をApple Silicon上で動作させていたが、バージョンが上がったことでqemuでは動作しなくなった模様。

qemuではなくRosettaを使うように設定を変更することで、動作するようになった。

=> Rosettaを使うように設定してあげればよさそう、ということがわかりました。

対処法

Rosettaを使うように設定する手順を記載します。
1: まずは↑の記事に書かれている通り、macOSのバージョンをVentura以降にあげましょう(けっこー時間かかります・・)

macOSがMonteleyではこの設定項目が表示されずRosettaが使えないようなので、その場合はVentura以降にOSバージョンを上げればよい

2:Docker Desktopの右上メニューから、歯車マーク(Settings)をクリック
3:左メニューからGeneralを選択
4:「Virtual Machine Options」で Apple Virtualization framework を選択
5: Use Rosetta for x86/amd64 emulation on Apple Siliconがアクティブになるので、チェックを入れる
6: 右下のApply & Restartをクリック
スクリーンショット 2025-01-13 14.01.41.png
7: コンテナを削除 → 再起動

# ボリュームごとコンテナを削除
$ docker-compose down -v
# コンテナを起動
$ docker-compose up -d

私の場合はこれで無事にdbコンテナが起動するようになりました!

まとめ

dockerには詳しくないので、コンテナの再起動方法などは雰囲気で書いてしまってますが。。。
同様のエラーでお困りの方の参考になれば幸いです!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?