Mac版のDockerでError response from daemon: Mounts deniedエラーが発生した際の修正方法

Mac版のDockerで-vオプションを使い、ホスト側のディレクトリをコンテナ内で使おうとした時、以下のようなエラーが表示されることがあります。

docker: Error response from daemon: Mounts denied: 
The path /var/jenkins_docker_data
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.
.

そのままエラーの内容を見れば直し方がわかると思いますが、一応メモで残しておきます。

 

追記 2019/05/04 : Mac OSにて/var配下のサブディレクトリを以下の工程を行って-vオプションで使えるようにしても読み込み専用になってしまい書き込めない場合があります。
chmod 777 /var/jenkins_docker_dataなどを行うことによってコンテナ内から書き込みできるようになりますがあまりオススメじゃないです。
/tmp/home配下の領域などを使ってください。

 

さらに追記 2019/05/04 : どうやら実行時の権限はDockerを使用しているユーザーにあるようです。そのためjenkinsコンテナなどでchown -R 1000:1000 /var/jenkins_docker_dataなどを行っても無駄です。
Mac OSのユーザー名とstaffグループでchown -Rを行ってみてください。
例 : chown -R fl1ne:staff /var/jenkins_docker_data

これによってJenkinsコンテナを動かそうとした際にでる以下のエラーメッセージが解決できます。

touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

chmod 777を行ってしまった場合はchmod 755を行っておくことを推奨します。

後、/varそのものは以下の手順で設定できません。
必ず/var配下のサブディレクトリを指定してください。

 

 

まずメニューバーのDockerアイコンをクリックし、Preferences...をクリックします。

 

表示されたウィンドウのFile Sharingタブ内に使用したいディレクトリを追加します。

今回は試しに/var/jenkins_docker_dataを追加します。

 

追加できました。

Apply & RestartボタンをクリックしてDockerを再起動させます。

 

注意! : Mac OSのバージョンによっては自動的にパスが/private/var/jenkins_docker_dataに変更されることがあります。

この場合/privateはもうすでに追加されているのでエラーが出ます。

回避方法は2種類あって、Dockerの-vオプションでパスを指定する際に明示的に/private/var/jenkins_docker_dataを指定する方法とDockerの設定ウィンドウ内のパスを後から/var/jenkins_docker_dataに変更するパターンがあります。

今回はDockerの設定パスを変更する方式でいきました。