次のコマンドを使用してシンボリックリンクを設定しようとしています。
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_html
Windows 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ディレクトリへのシンボリックリンクの作成を自然に拒否しているようです。