M1 Mac で Dockerを使う話
経緯
Mac OS 上で Docker を使おうと思ったら Docker Desktop が必須
また、2022年2月から Docker Desktop は条件付きで有料になった。
あと、Docker Desktop だと遅く感じることがあったりする。
なので Docker Desktop から離れようって思った のが話の経緯
解決策
どうやって離れるかだが、単純に Linux 上で動かせばDocker Desktop が要らなくなるのでいろんな柵から開放される。
仮想マシンの話
とりあえず良く使っていたし、有名なので virtualbox を使おうとしたところインストールができない…
ググって調べたところ M1 にはvirtualbox が対応しておらず、そもそもインストールできないようになったらしい
macOS host: show message indicating the unsupported CPU on M1 based Macs and abort installation
Linuxの仮想マシンを動かせるツールが無いか色々と調べたところ、Multipass というツールを発見
Developers can now launch Linux instances on Apple M1 with Multipass 1.8
どうやらUbuntuが公式で作成している仮想マシンツールっぽいのでUbuntu を使うには問題なさそう。
※ CentOSを使うことはできない
使い方
クジラ飛行机 さんが使い方をまとめてくださっていたので、この記事を参考にしながら導入する
とりあえず試すだけなら、仮想環境内に入って公式サイトに従ってDockerをインストールする
適当にコマンド打ってdocker コマンドが multipass 経由で macの端末から使えることを確認する
multipass exec ${ラベル} -- docker --version
運用
ちゃんと使っていくために cloud-init.yaml を作っておく
#cloud-config
groups:
- docker
system_info:
default_user:
groups: ["docker"]
package_update: true
packages:
- apt-transport-https
- ca-certificates
- curl
- gnupg-agent
- software-properties-common
runcmd:
# 名前解決ができなかったので追加した。理由をちゃんと調べていないので不要なら消す。
- sudo sed -e '$a nameserver 8.8.8.8' -i /etc/resolv.conf
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
- add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get update -y
- sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- systemctl start docker
- systemctl enable docker
- sudo apt install -y snapd
- sudo snap install multipass-sshfs
- sudo apt install -y docker-compose
作成したyamlを指定して仮想マシンを起動する
multipass launch --name ${任意のラベル} --cloud-init cloud-init.yaml
ローカル内のディレクトリをマウントしたい場合このコマンドも実行しておく
multipass mount ${マウントしたいディレクトリ} ${任意のラベル}:${マウント先}
あとはDocker が入ったUbuntu のイメージを使って快適なDocker ライフを続けるだけ