概要

昔から、macにおけるDocker Desktop(Docker Desktop on Mac)の動作には,ファイル操作が遅いという報告が挙げられていました。

これは、macにおけるファイル操作の仕組みに問題があるため、解決が難しくmacでDocker Desktopを使う際には妥協をしなければならない要素でありました。

しかし、最近になってこの問題を解決する方法がリリースされるようになりました。ここでは、この問題を解決する方法を紹介します。

環境

  • macOS Monterey 12.3
  • Docker Desktop on Mac 4.6.1

問題について

macのDocker環境では、ファイル操作が遅いという問題があります。これは、mac上のファイルをDockerコンテナと共有するときなどに遅くなり、コンテナ上のみのファイルを操作するときは問題が発生しません。また、このような問題が発生するのはmacであり、WindowsやLinuxではこのような問題は発生しません。

こちらの問題について、macでDocker Desktopがリリースされてから長い間解決されておらず、Docker Desktopが提供する方法以外を用いた方法で解決することはできました。例えばrsyncなどを使ってファイルの共有を行うなどです。

しかし、これらの方法は設定が面倒であったり、使い勝手があまりよくないなど、別の問題が発生していました。

解決方法

Docker Desktop on Macの4.6.0からVirtioFSを用いたファイルの共有方法が提供されるようになりました。これは、ファイル共有の問題を解決する方法として注目されているものです。

この機能を使うには、いくつかの条件があります。まずは、こちらの機能が、現在試験的な機能(Experimental Features)であるということです。そのため、まだバグなどが残されている可能性があります。さらに、VirtioFSを使う場合は、macOSのバージョン12.2以降が必要であり、特に12.3以降の方が望ましいとされています。

こちらは、Docker Desktop on MacのVirtioFSに関する試験的機能の設定に書かれている説明です。このように条件が示されています。

Enables the new Monterey VirtioFS accelerated directory sharing. This improves I/O performance for operations on volumes shared with ‘-v’. Note - you must have macOS 12.2 or later and the new Virtualization Framework enabled (via toggle above). We recommend that Intel mac owners use macOS 12.3 for best experience.
Check back for more experiments soon, or sign up for our Developer Preview program.

VirtioFSの設定方法は簡単です。最初にDocker Desktop on Macの設定画面(Preferences)を開きます。次に、「Experimental Features」から「Enable VirtioFS accelarated directory sharing」にチェックを入れます。最後に、右下の「Apply & Restart」をクリックして、Docker Desktop on Macの再起動を行います。

2ca43f53cb56ff86860d33487c937677-1024x616.png

これで、設定は終わりです。使い方については、今までと同じですので、何か特別な操作などはいらずに、ファイル共有の高速化ができます。

さいごに

Docker Desktop on Macにおけるファイル共有の高速化は、かなり需要がありそうだったのに中々進展がなく、やきもきしていました。しかし、最近になってこちらの問題について解決の兆しが見え始めました。

まだ試験的機能ですので、今後正式なリリースとなるのかや、安定した動作となるのかは分かりませんが、macにおけるDocker利用がさらに快適になる可能性が高く、期待しています。