みなさんこんにちは! 最近ガジェヲタクを騒がせてるApple M1チップですが、私も先日入手しました! レビュー通りのパフォーマンスを発揮し、ゲームチェンジャーと言われるのもわかる気がしました。対応してないアプリもRosetta 2の力で大抵動いてしまうので驚きを隠せない点でした。
ですが、サーバーサイドデベロッパーの皆さんの必須ソフト「Docker」はまだM1チップ上では動かないのです。Dockerが動かないで諦めてるデベロッパーさん結構いると思います。
そこで今回はM1チップで無理矢理Dockerを動かす方法を伝授したいと思います!
ARM版Ubuntuを動かす
今回は、SimpleVMというApple M1チップ上で動く仮想化ソフトを使っていきます。ベースとなってるリポジトリは以下のものです。
これだけでも動くのですが、Ubuntu Installerが動くとこまでで止まってしまします。今回はこのSimpleVMをforkした以下のものを利用します。
上記のリンクから「SimpleVM_Ubuntu.zip」をダウンロードし中にある「SimpleVM」アプリを起動してください。起動すると以下のような画面が出てくるので同じくフォルダにある3つのファイルをDrag & Dropしてください!

あとは、「Start」を押すだけです!起動するとConsoleが出てきてUbuntuが起動します!
起動すると、ログインを求められるのでrootで入りましょう!
User: root
Password: applesilicon
Multi CPU Archに対応したDockerを構築しよう!
これ意外に知られてないと思うのですが、Docker Desktopは別のCPU アーキテクチャー用にビルドされたDocker Imageも動かせます。
また、Linux版でもユーザーモードQEMUを入れることで簡単にDocker Desktopと同等の機能を手に入れることができます!!
Dockerのインストール
apt経由でインストールするのが無難です! 以下のコマンドを実行してください!!
apt install docker.io
これで以上です! 試しに以下のコマンドを実行してhello worldしときましょう!
docker run hello-world
ユーザーモードQEMUのインストール
apt経由で「qemu-user-static」を入れるだけです!
apt install qemu-user-static
これでDocker上でamd64用にビルドされたイメージも動くようになりました! 試しに以下のコマンドを実行してみて、確認してみましょう!
docker run --rm amd64/ubuntu arch
無事実行できたら以下の画像のように「x86_64」の文字が出力されます! ちゃんとARM Docker上でamd64(x86_64)が動いてます!!

まとめ
すんなり動いてしまい正直書いてる本人がびっくりしてます…w
私の不安要素であった、arm64だからamd64のDocker Image動かないんでしょう?っていうのは簡単に吹き飛ばされてしまいました… 恐るべしDocker…
この環境「無理矢理」ながらもちゃんとSSH経由でホストPCであるMacとも繋げることができ、VSCodeの「Remote Development」と組み合わせれば不自由なく開発できるのでは?
M1 Macはまだ発展段階とは言えますが、工夫次第ではものすごくパワフルな開発環境に化けるかもしれないですね!