[解決済み] マウントが拒否されました。パスがOS Xから共有されておらず、Dockerに知られていない。
質問
コマンド
docker run -v /var/folders/zz/...
は次のようなエラーを発生させます。
docker: Error response from daemon: Mounts denied:
The paths /var/folders/zz/... and /var/folders/zz/...
are not shared from OS X and are not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
ファイル共有を開くと、/private がすでに表示されています。
もし私が
/var/folder/
を追加しようとすると、それは
/private/var/folders
に解決され、それは /private のサブセットであるため、追加は拒否されます。
要約すると、私には、ディレクトリ
/var/folders/..
のサブディレクトリとして OS X で共有されています。
/private
のサブディレクトリとしてOS Xで共有されており、したがってDockerに知られている必要があります。これを解決するための何らかの支援をお願いします。
実験として、私は
/private
を、ファイル共有の
/private/var/folders
と入力し、dockerを再起動しましたが、結果は変わりませんでした。
より完全な参考のために、これは .shスクリプト を実行するものです。 この python スクリプト を実行し、その後にdockerコマンドを実行します。
どのように解決するのですか?
Mac版Docker ボリュームマウントは基本的なDockerシステムとは異なる挙動をします。これは主に、Docker が Apple のファイルシステムサンドボックスガイドラインに準拠しようとするためです。
Dockerの環境設定に示されているように、特定のパスのみがmacOSによってエクスポートされます。
-
/Users
-
/Volumes
-
/tmp
-
/private
/var
は、macOSではシンボリックリンクで
/private
. それはまた
/tmp
:
$ ls -ld /tmp /var
lrwxr-xr-x@ 1 root wheel 11 Jan 26 16:18 /tmp -> private/tmp
lrwxr-xr-x@ 1 root wheel 11 Jan 26 16:18 /var -> private/var
なぜ
/tmp
は共有パネルに表示されるのに
/var
は表示されません (両方とも
/private
)? MacのDocker
ファイルシステムの名前空間に関するドキュメント
で説明しています。
デフォルトでは、ファイルの共有は
/Users/
,/Volumes/
,/private/
そして/tmp
を直接指定します。Dockerにエクスポートされるディレクトリツリーを追加または削除するには、Dockerの環境設定whaleのFile sharingタブを使用します。 menu -> Preferences -> File sharingを選択します。(環境設定参照)。で使用される他のすべてのパスは
-v
で使用される他のすべてのパスは、Dockerコンテナを実行しているMoby Linux VMから供給されます。 のような引数は-v /var/run/docker.sock:/var/run/docker.sock
のような引数は期待通りに動作するはずです。macOS のパスが共有されておらず、VM に存在しない場合、VM に作成するのではなく、マウントをバインドしようとすると失敗します。 VM に既に存在し、ファイルを含むパスは Docker によって予約されており、macOS からエクスポートすることはできません。
以下のことに注意してください。
/var/run
は、macOS からではなく、Linux VM からマウントされる場所として、ここで特に言及されています。
ボリュームマウントを要求すると、macOS ファイルシステムのエクスポートが最初にチェックされます。そこに一致するものがない場合、Docker が実行されている Linux VM が次にチェックされます。どちらも要求されたパスを持っていない場合、マウントは失敗します。
あなたの場合
/var
は macOS ではエクスポートされません。
/var
は Linux VM に存在しますが
/var/folders
は存在しません。したがって、パスは利用できず、マウントは失敗します。
もし、パスを
/private/var
に変更すると、macOS は全体の
/private
ファイルシステムツリー全体をエクスポートしてマウントするからです。
よりポータブルにするために、現在どのプラットフォームで動作しているかをテストし、それがmacOSであれば、マウントパスのプレフィックスとして
/private
.
関連
-
[解決済み] ipykernel_launcher という名前のモジュールがありません。
-
[解決済み] mongod、mac os x - rlimits 警告 [閉鎖].
-
[解決済み] OSX -bash: composer: コマンドが見つかりません。
-
[解決済み] MacでGNUのreadlink -fの動作を得るにはどうしたらいいですか? [クローズド]です。
-
[解決済み] Zsh は安全でない補完依存のディレクトリを検出する
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerイメージはホストマシン上のどこに保存されていますか?
-
[解決済み] denied: 要求されたリソースへのアクセスは拒否されました : docker
-
[解決済み】Dockerイメージとコンテナの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SSH -L 接続は成功したが、localhost のポートフォワーディングが機能しない "channel 3: open failed: connect failed: 接続が拒否されました"
-
[解決済み] OS X の cp コマンドをターミナルで実行 - そのようなファイルまたはディレクトリはありません。
-
[解決済み] MacでGNUのreadlink -fの動作を得るにはどうしたらいいですか? [クローズド]です。
-
[解決済み] MacVimと通常のVimの違いは何ですか?
-
[解決済み] Postgres - FATAL: データベースファイルはサーバーと互換性がありません。
-
[解決済み] SSH -L 接続は成功したが、localhost のポート転送が機能しない "channel 3: open failed: connect failed: 接続が拒否されました"
-
[解決済み] インストール後、Gulpコマンドが見つからない
-
[解決済み] cmake 既存のソースから Xcode プロジェクトを生成する
-
[解決済み] 特定のパターンに一致するすべてのファイルを再帰的に検索する
-
[解決済み] ターミナルで現在のブランチとフォルダのパスを表示するにはどうすればよいですか?