備忘録 M1Mac+Lima+DockerでDocker compose開発する際のポイント
tl;dr
- 多くのイメージはarm64v8でimageを探すと見つかることがあるよ
- mysqlはmysql-serverはmysqlと動きが異なるので、arm64v8/mariadbを使ったほうが良いよ
- lima + dockerに接続するならunix socketが良いよ
Lima+Docker+Docker Compose+OSX環境
DockerDesktopがおもすぎる問題は非常に言われており、ベンチマークも各所に上がっている。DockerDesktopが重いシンプルな理由としては以下が挙げられる
- 別アーキテクチャ(Intel x64)のエミュレートをしているため、動作が超非効率
- Macのディスクをマウントして動作させているため、これまた動作が非効率(Intel macでも同様の現象あり)
この問題はひとえにCPUのアーキテクチャが全く異なることからきている。
筆者は Lima + Docker + DockerCompose 環境でPython/PHPの開発が多いのだが、全てをubuntuから独自イメージを作ってない人にとっては、ハマりがちという問題がある。
2日ハマりきった経験をもとに知りたかった情報をまとめます。
arm64v8を使おう
M1MacのCPUのアーキテクチャ名は linux/amd64 でも、 linux/x86_64 でもなく、 「linux/arm64v8」であることをしっかりと念頭に置く必要がある。
現在M1Macのような新しいアーキテクチャ対応のDockerプログラムは徐々に出つつあり、メジャーなDocker imageでは対応されつつあるが、mysql(8のみ限定的に対応)やphpmyadmin(公式では非対応)などのDockerを使っている場合など、そのままでは動作しないケースも多い。
2021年12月時点では、「arm64v8 <ソフト名> docker」のような検索をすることで野良docker imageが出てくることが多いので、それを使うという手もある。
以下は、よく行う変換のルールだ
* mysql -> arm64v8/mariadb (mysql5.7の場合はmariadb10.3, mysql8の場合は mariadb10.7)
* phpmyadmin/phpmyadmin -> arm64v8/phpmyadmin
* wernight/ngrok -> athombv/ngrok (ルールの書き換えが必要)
~/work などを作ってwritableにmountしよう
Limaの仕様上、~をwritableにするのは推奨されていないため、~/workなどをwritableにするのが良い
limaのインストール後に出てくるunix socketを使ってdockerしよう
limaの公式のdockerの設定を使うと、最後にunix socketの情報が出てくる。
このunix socketの情報を正しく設定すると、非常にうまく動作する。一方、ipアドレスベースでの指定は非常にバグが多く、うまく動作しないことが多い。
Author And Source
この問題について(備忘録 M1Mac+Lima+DockerでDocker compose開発する際のポイント), 我々は、より多くの情報をここで見つけました https://qiita.com/groovytech/items/11a0679c88a49bf585de著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .