Docker for Mac でファイルをマウントできない時の解決法 🐳
Docker for Mac でファイルをマウントできなくなった時の解決法をご紹介します 🐳
前提条件
使用しているバージョン:
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.7
BuildVersion: 19H1217
$ docker --version
Docker version 20.10.6, build 370c289
$ docker-compose --version
docker-compose version 1.26.0, build d4451659
Docker Volume の使用方法
Docker Volume の使用方法については、以下のドキュメントにまとまっています 📚
ヘルプコマンドで確認できるオプション:
$ docker run --help
# snip...
--mount mount Attach a filesystem mount to the container
-v, --volume list Bind mount a volume
--volume-driver string Optional volume driver for the container
--volumes-from list Mount volumes from the specified container(s)
マウントに失敗する例
Mac 側の /var/tmp ディレクトリを、Docker 側の /pwd にマウントしてみます:
$ pwd
/var/tmp
$ ls -l
total 0
drwxr-xr-x 2 root wheel 64 6 10 23:12 KindlePreviewerUpdater/
drwxr-xr-x 4 root wheel 128 5 28 09:33 com.paceap.eden.licensed/
srw-r--r-- 1 root wheel 0 5 28 09:33 filesystemui.socket=
$ docker container run --rm -it -v $PWD:/pwd:rw alpine
/ # ls /pwd/
/ #
Docker 側の /pwd ディレクトリにファイルがなく、マウントができていません 😵
解決法
Docker for Mac の設定を開き、「Preferences > Resources > FILE SHARING」から /var/tmp を追加します 🔧
設定手順
- Docker Desktop のメニューから「Preferences」を選択
- 「Resources」タブをクリック
- 「FILE SHARING」を選択
- 「+」ボタンをクリックしてマウントしたいディレクトリを追加
- 「Apply & Restart」をクリック
重要なポイント
Docker for Mac では、FILE SHARING で設定したディレクトリのみマウントすることができます ⚠️
デフォルトでは以下のディレクトリが設定されています:
/Users/Volume/private/tmp
これ以外のディレクトリをマウントしたい場合は、明示的に FILE SHARING に追加する必要があります。
確認方法
設定後、再度マウントを試してみます:
$ docker container run --rm -it -v $PWD:/pwd:rw alpine
/ # ls /pwd/
KindlePreviewerUpdater/ com.paceap.eden.licensed/ filesystemui.socket
正常にマウントされていることが確認できます ✅
まとめ
Docker for Mac でボリュームマウントが失敗する場合は、FILE SHARING の設定を確認してください 💡 セキュリティの観点から、必要なディレクトリのみを追加することをおすすめします。