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の設定パスを変更する方式でいきました。
コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤
[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
コメント