Dockerでシンボリックリンクを作成しようとすると「プロトコルエラー」が発生する

Dockerでシンボリックリンクを作成しようとすると「プロトコルエラー」が発生する

次のコマンドを使用してシンボリックリンクを設定しようとしています。

ln -s /var/www/data/cache/widget/overlay/ /var/www/public_html/images/overlay

しかし、それは出力

ln: failed to create symbolic link '/var/www/public_html/images/overlay': Protocol error

ホストオペレーティングシステムはWindows 8で、DockerイメージはUbuntuです。 Dockerイメージが起動すると/var/www/public_htmlWindows 8内のフォルダにマッピングされるため、問題が権限に関連している可能性があると思います。/C/Users/Username/Documents/development/public_htmlただし、フォルダ内のコマンドラインを使用してフォルダとファイルを作成できます。public_htmlこれは権限に違反します。

.shまた、実行されるスクリプトだけなので、Dockerを管理者として起動して役に立つかどうかを確認することはできませんでした。

シンボリックリンクを生成するときに「プロトコルエラー」が発生した人はいますか?または、この問題の原因に関する追加情報を取得する方法をご存知ですか?

編集:また、PHP経由でフォルダに画像を保存するかpublic_html(PHP経由で)ファイルをコピーしようとすると、同じ「プロトコルエラー」メッセージが表示されます。

答え1

では、/var/www/public_html実際にはWindowsフォルダなのでは/var/www/dataないでしょうか?仮想マシンのWindowsディレクトリからUbuntuディレクトリへのシンボリックリンクを作成しようとしています。 Windowsでは、これらのオブジェクトをサポートすることは不可能です。

上記を拡張すると、ポイントはWindowsホストがクライアントがC:\Users\Tom_Hart\Documents\development\public_html使用できるファイルサーバーに設定されていることです。具体的には、Ubuntuイメージへの読み取り/書き込みアクセスを提供し、Ubuntuがそのオブジェクトを読み取り、変更、および作成できるようにします。 Windowsディレクトリ以下。しかし、通常、サーバーは自分のクライアントについて知る方法がありません(Googleがインデックス作成を開始したときにどのような気がしますか?)あなたのファイルを検索して検索結果に表示しますか? ) Docker イメージをエクスポートしていない場合それ/var/www/dataたとえば、Windowsはこれらのパスにアクセスしたり理解したりすることはできません。

    C:\Users\Tom_Hart\Documents> メモ帳/var/www/data/cache/widget/overlay/

うまくいきません(おそらくあなたは本気だと思いますC:\var\www\data\cache\...)。 Windowsは、Windowsプロセスにアクセスできないリソースを指すWindowsディレクトリへのシンボリックリンクの作成を自然に拒否しているようです。

関連情報