嘗試在 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_html
它被映射到 Windows 8 中的一個文件夾,/C/Users/Username/Documents/development/public_html
. 但是,我可以通過文件夾內的命令行創建文件夾和文件public_html
,這與權限相悖。我也找不到以管理員身份啟動 Docker 以查看是否有幫助,因為它只是一個
.sh
執行的腳本。創建符號連結時是否有其他人遇到“協議錯誤”?或者知道如何獲得有關導致此問題的原因的更多資訊?
編輯:另外,如果我嘗試通過 PHP 將圖像保存到
public_html
文件夾或將文件複製到那裡(再次通過 PHP),則會給出相同的“協議錯誤”消息。
所以
/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 映像正在導出其文件,否則 Windows 無法訪問/var/www/data
— 或甚至理解這樣的路徑;例如,C:\Users\Tom_Hart\Documents> 記事本 /var/www/data/cache/widget/overlay/*某事*
不起作用(它可能認為你的意思是
C:\var\www\data\cache\...
)。Windows 將拒絕在 Windows 目錄中創建指向 Windows 程序無法訪問的資源的符號連結似乎很自然。