Ubuntu

嘗試在 Docker 中創建符號連結時出現“協議錯誤”

  • April 25, 2017

我正在嘗試使用命令設置符號連結

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 程序無法訪問的資源的符號連結似乎很自然。

引用自:https://unix.stackexchange.com/questions/197642