Mac 版 Docker Desktop で既に分かっている問題

  • virtualization.framework 実験的機能を使用時、以下の問題が見受けられます。

    • いくつかの VPN クライアントは、ホスト上から VM で動作している Docker への通信を阻止できるため、 Docker Desktop を正しい起動を妨げます。 docker/for-mac#5208 をご覧ください。

      これは vmnet.frameworkvirtualization.fremework によって使われます)と VPN クライアント間の相互干渉によるものです。

    • いくつかのコンテナのディスク I/O が予想よりも遅くなります。 docker/for-mac#5389 をご覧ください。特にディスクの フラッシュ(flush) は遅くなります。これは、ホスト上の安定したストレージ上に、データを確実に書き込む必要があるためです。他にも分かっているのは、 Intel チップ上の MacOS Monterery で virtualization.fremework 利用時に、パフォーマンス上の問題があります。

      これは新しい virtualization.fremework 技術による副作用です。

    • Linux Kernel が時々クラッシュする可能性があります。Docker は現在この問題を検出でき、利用者に対して素早く Linux を再起動できるようにエラーダイアログ画面をポップアップします。

      現在もデータを収集中であり、代替 kernel のバージョンを試験中です。

  • IPv6 は(まだ) Docker Desktop 上ではサポートされていません。

  • Apple silicon 上のネイティブな arm64 コンテナで、 debian:busterubuntu:20.04``や ``centos:8 のように、 libssl の古いバージョンを使っている場合は、 curl https://dl.yarnpkg.com のように、いくつかのTLS サーバへの接続を試みるとセグメンテーション違反になります。このバグは、 debian:bullseyeubuntu:21.04fedora:35 に含まれる libssl の新しいバージョンで修正済みです。

  • Docker Desktop で docker-compose up の実行時にエラーが出るかもしれません( ValueError: Extra Data )。この現象が発生するのは、関連するデータのイベントが1つ1つ処理されるのではなく、一度にすべて処理されるためです。そのため、2つ以上のオブジェクトが連続して戻るようなデータがあれば、まれにエラーを引き起こします。

  • Docker.app の実行後、 .dmg を強制イジェクトすると、鯨のアイコンが反応しなくなります。また、アクティビティモニタでは、いくつかのプロセスが CPU リソースの大部分を消費してしまい、Docker が無反応なように見えます。この問題を解決するには、リブートして Docker を再起動します。

  • Docker を Preferences でログイン時に自動起動を設定しても、有効にならない場合があります。これは Docker ヘルパー、登録、バージョンに関連する一連の問題です。

  • macOS 10.10 Yosemite 以降では、Docker Desktop は HyperKit ハイパーバイザ( https://github.com/docker/hyperkit )を使います。Intel Hardware Accelerated Execution Manager (HAXM) のような HyperKit と競合するようなツールで開発を行っている場合、同時に両者を実行するための回避策は、現時点ではありません。一時的に Docker Desktop を終了して HyperKit を停止すると、 HAXM を利用できます。これにより HyperKit による干渉を防ぎながら、他のツールも利用し続けることができます。

  • Apache Maven のようなアプリケーションを使っている場合に、 DOCKER_HOST ` :code:`DOCKER_CERT_PATH 環境変数をそれぞれ設定し、Docker に対して Unix ソケットを通して接続するように設定を試みる場合があります。その場合は、次のようにします。

export DOCKER_HOST=unix:///var/run/docker.sock
  • osxfs ではディレクトリのバインド・マウントによる性能上の問題がいくつかあります。とくに、小さなブロックへの書き込みと、大きなディレクトリの再帰的な表示です。さらに、大きなディレクトリ階層を繰り返しスキャンするような、コンテナが非常に多いディレクトリの操作をすると、乏しいパフォーマンスに陥る可能性があります。このような挙動となりうるアプリケーションには:

    • rake

    • ember build

    • Symfony

    • Magento

    • Zend Framework

    • PHP アプリケーションのうち、 Composervendor フォルダに依存関係をインストールする場合

    この挙動を回避するには、ベンダーまたはサードパーティ ライブラリ Docker ボリュームの中に入れ、 osxfs マウントの外で一時的にファイルシステム処理を行うようにします。そして、 Unison や rsync のようなサードパーティ製ツールを使い、コンテナのディレクトリとバインド マウントしたディレクトリ間を同期します。私たちは数々の技術を用いながら性能改善にアクティブに取り組んでいます。詳細を学ぶには、 ロードマップ上のトピック をご覧ください。

参考

Known issues for Docker Desktop on Mac

https://docs.docker.com/desktop/troubleshoot/known-issues/