Docker Desktop for Apple silicon
Apple silicon 上での Docker Desktop for Mac が正規安定版(GA release)として利用できるようになりました。 開発者によるローカル開発環境の選択肢が広がったことになります。 また ARM ベースアプリケーション開発に拡張することができます。
Docker Desktop for Apple silicon はマルチプラットフォームイメージにも対応しています。 これがあれば、複雑なクロスコンパイル開発環境を設定することなく、x86 と ARM アーキテクチャーの双方に対するイメージをビルドし実行することができます。 さらに docker buildx を用いれば、シームレスにマルチプラットフォームビルドをビルド作業に統合することができます。 そして Docker Hub によって、マルチプラットフォームイメージを同定し共有するために利用できます。
Download Docker Desktop for Mac on Apple silicon:
Docker Desktop のダウンロード
システム要件
Docker Desktop 4.3.0 からは、Rosetta 2 をインストールするためのハードウェア要件を削除しています。 Darwin/AMD64 を利用するにあたって、Rosetta 2 を必要とするコマンドラインツールが少しはあります。 以下の既知の問題の節を確認してください。 ただし十分な機能性を確保するためには、Rosetta 2 のインストールをお勧めします。 Rosetta 2 のインストールは、コマンドラインから手動で、以下のようにして行います。
$ softwareupdate --install-rosetta
既知の問題
- コマンドラインツールの中には、Rosetta 2 がインストールされていないと、動作しないものがあります。
- 旧バージョン 1.x における
docker-compose
。 これにかわって Compose V2 の利用をお勧めします。docker compose
と入力するか、あるいは 一般タブ の Use Docker Compose V2(Docker Compose V2 の利用)オプションを有効にしてください。 docker scan
コマンドと、それが依存しているsnyk
バイナリ。docker-credential-ecr-login
credential helper。
- 旧バージョン 1.x における
-
ARM64 アーキテクチャー向けのイメージがすべて利用可能となっているわけではありません。 Intel イメージの実行には、エミュレーションのもとで
--platform linux/amd64
をつけて実行することが必要です。 特に mysql イメージは ARM64 向けには利用できません。 これに対する当面の対処としては mariadb イメージを利用してください。しかし Apple silicon 上において Intel ベースのコンテナーを実行しようとしても、qemu によるコンテナー実行が失敗することがあるため、エミュレーションがクラッシュすることがあります。 さらに qemu エミュレーションのもとでは、ファイルシステム変更通知 API(たとえば
inotify
)は動作しません。 エミュレーションのもとで適正にコンテナーが動作しない状況であっても、それでもコンテナーは動作し続けますが、それは通常のネイティブな環境に比べて、非常に遅くメモリもたくさん消費します。上のことをまとめると、Arm ベースのマシン上において Intel ベースのコンテナーを動作させているのは「ベストエフォート」にすぎない、言い換えればできる範囲での対応でしかない、ということです。 したがって Apple silicon 上では可能なら arm64 コンテナーの実行をお勧めします。 またコンテナーを制作する方は arm64 やこれを含むマルチアーキテクチャーのコンテナーとすることをお勧めします。 この問題は時が経つにつれて、また マルチアーキテクチャーをサポートする イメージが今後さらに再ビルドされていくにつれて、まれな問題となっていくものと考えています。
- コンテナー内からインターネットに向けての
ping
が期待どおりに動作しません。 ネットワークの確認にあたってはcurl
やwget
を利用してください。 docker/for-mac#5322 を参照のこと。 - TCP ストリームがハーフクロース(half-closed)された際に、たまにデータが欠損する場合があります。
Docker Desktop RC 3 以降の修正
--privileged
が指定されたコンテナー内において、/dev/null
などのデバイスが、適切に0666
(rw-rw-rw-
)となりようにしました。 docker/for-mac#5527 を Fix に。- Docker Desktop にてアイドル時の CPU 消費を減少させました。
Docker Desktop RC 2 以降の修正
- Linux カーネル 5.10.25 へアップデートし、信頼性を向上させました。
Docker Desktop RC 1 以降の修正
- コンテナー間での HTTP および HTTPS トラフィックを正常に振り分けるようにしました。 docker/for-mac#5476 を Fix に。
Docker Desktop プレビュー 3.1.0 以降の修正
- ビルドは将来バージョンに向けて自動アップデートされます。
- HTTP プロキシーへのサポートが動作するようになりました。
これには TLS SNI を通じた
no_proxy
ルールに基づくドメイン名へのサポートも含まれます。 docker/for-mac#2732 を Fix に。
Apple Silicon プレビュー 7 以降の修正
- Kubernetes が動作するようになりました。 (ただし証明書を再生成するために、一度 Troubleshoot メニュー内からクラスターのリセットが必要になります。)
- osxfs ファイル共有が動作します。
- DNS エントリー
host.docker.internal
とvm.docker.internal
は解決されました。 - ハードコーディングされた IP アドレスの削除。 Docker Desktop は macOS によって割り振られた IP アドレスを動的に検出するようになりました。
- 更新バージョンには、ディスク性能を向上させる変更が含まれています。
- Docker メニューの Restart オプションが動作するようになりました。
フィードバック
みなさんからのフィードバックが重要と考えています。 GitHub リポジトリ Docker Desktop for Mac に issue を生成してフィードバックをお寄せください。
また Docker Community Slack への参加や #docker-desktop-mac チャネルへの質問をお願いします。
Docker Desktop, M1, Silicon, Apple