web-dev-qa-db-ja.com

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

ホストOSはWindows8で、DockerイメージはUbuntuです。 Dockerイメージが起動すると、/var/www/public_htmlがWindows8内のフォルダー/C/Users/Username/Documents/development/public_htmlにマップされるため、この問題はアクセス許可に関係している可能性があると思います。ただし、public_htmlフォルダー内のコマンドラインを使用してフォルダーやファイルを作成することはできます。これは、アクセス許可であることに反します。

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

シンボリックリンクを作成するときに「プロトコルエラー」が発生した人は他にいますか?または、この問題の原因についてより多くの情報を取得する方法はありますか?

編集:また、PHPを介してpublic_htmlフォルダーに画像を保存するか、そこにファイルをコピーしようとすると(ここでも、PHPを介して)、同じ「プロトコルエラー」が発生します。メッセージ。

4
TMH

つまり、/var/www/public_htmlは実際にはWindowsフォルダーですが、/var/www/dataはそうではありませんか? Windowsディレクトリから仮想マシンのUbuntuディレクトリへのシンボリックリンクを作成しようとしています。 Windowsがそのようなオブジェクトをサポートできる方法はありません。

上記をさらに詳しく説明すると、ポイントは、Windowsホストがファイルサーバーとしてセットアップされ、クライアントがC:\Users\Tom_Hart\Documents\development\public_htmlを利用できるようにすることです。具体的には、Ubuntuイメージへの読み取り/書き込みアクセス権を付与して、Ubuntuが読み取れるようにします。そのWindowsディレクトリ内およびその下にオブジェクトを変更および作成します。ただし、一般に、サーバーはクライアントを認識できません(Googleがyourファイルのインデックス作成を開始し、検索結果に返すとどう思いますか?)Dockerイメージがエクスポートされていない限りitsファイルの場合、Windowsには/var/www/dataにアクセスする方法がなく、そのようなパスを理解することさえできません。例えば。、

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

機能しません(C:\var\www\data\cache\...を意味していると思われる場合があります)。 Windowsが、WindowsプロセスでアクセスできないリソースへのシンボリックリンクをWindowsディレクトリに作成することを拒否するのは自然なことです。

3
Scott