共用方式為


如何排解使用 Docker 進行 Visual Studio 開發的疑難問題

適用於: Visual Studio

當你使用 Visual Studio 容器工具時,可能會在建置或除錯應用程式時遇到問題。 本文介紹了一些常見的故障排除步驟。

沒有啟用音量共享。 在 Docker CE for Windows 設定中啟用磁碟區共享(僅限 Linux 容器)

只有在使用 Docker 的 Hyper-V 時,才需要管理檔案分享。 如果你用的是 WSL 2,不需要照本節步驟操作,檔案分享選項也看不到。 若要解決此問題:

  1. 在通知區域中右鍵單擊Docker for Windows,然後選擇設定

  2. 選取 [資源檔案分享],並共用需要存取的資料夾。 您可以共用整個系統磁碟驅動器,但不建議這麼做。

    共用磁碟驅動器的螢幕快照。

提示

Visual Studio 當 Shared Drives 未設定時會提示你。

Windows 容器路徑的問題

當你在 Windows 容器中使用 Linux 專用的檔案路徑時,可能會遇到各種檔案輸入或輸出(I/O)錯誤。 如果你看到這些錯誤,請檢查環境變數 的值。 若變數已設定,Visual Studio 嘗試使用 Windows 子系統 Linux 版(WSL)路徑,參考 Windows 檔案以建立磁碟區。 這種方法在 WSL 的 Docker 中是必要的,但在 Windows 上的 Docker Desktop 上則無法使用。 如果你使用 Windows 容器,務必取消這個環境變數。

無法開始偵錯

造成這個問題的一個原因是你的使用者設定資料夾裡的除錯元件已經過時了。 執行以下指令移除這些資料夾,讓最新的除錯元件在下一次除錯時段中被下載。

  • del %userprofile%\vsdbg
  • del %userprofile%\onecoremsvsmon

偵錯應用程式時網路特有的錯誤

試著執行從 Cleanup Container Host Networking 下載的腳本,它會刷新主機上的網路相關元件。

無法掛載

使用適用於 macOS 的 Docker 時,您可能會遇到參考資料夾 /usr/local/share/dotnet/sdk/NuGetFallbackFolder 的錯誤。 將資料夾新增至 Docker 中的 [檔案分享 ] 索引標籤。

Docker 使用者群組

你在使用 Visual Studio 處理容器時可能會遇到以下錯誤:

目前的用戶必須位於 『docker-users』 群組中,才能使用 Docker Desktop。 把自己加入「docker-users」使用者群組,然後登出 Windows。

你必須是「docker-users」群組的成員,才能擁有使用 Docker 容器的權限。 要在 Windows 10 或更新版本加入群組,請依照以下步驟操作:

  1. 從 [開始] 功能表 開啟 [計算機管理]。
  2. 展開 [ 本機使用者和群組],然後選取 [ 群組]。
  3. 尋找 docker-users 群組,以滑鼠右鍵按兩下並選取 [新增至群組]。
  4. 新增您的用戶帳戶或帳戶。
  5. 登出並重新登入以使這些變更生效。

您也可以在系統管理員命令提示字元中使用 命令,將使用者新增至特定群組。

net localgroup docker-users DOMAIN\username /add

在 PowerShell 中 ,使用 Add-LocalGroupMember 函 式。

磁碟空間不足

根據預設,Docker 會將映射儲存在 %ProgramData%/Docker/ 資料夾中,通常是在系統磁碟驅動器 C:\ProgramData\Docker\ 上。 若要防止映像佔用系統磁碟驅動器上的寶貴空間,您可以變更映射資料夾位置。 要更改地點:

  1. 在工作列右鍵點擊 Docker 圖示,選擇 設定。

  2. 選取 [Docker 引擎]。

  3. 在編輯窗格中,使用 Docker 映像所需位置的值來新增 屬性設定:

       "graph": "D:\\mypath\\images"
    

    Docker 檔案共享的螢幕快照。

  4. 選取 [套用並重新啟動]。 這些步驟會修改 %ProgramData%\docker\config\daemon.json 的組態檔。 先前建置的映像不會移動。

容器類型不符

當你為專案加入 Docker 支援時,你可以選擇 Windows 或 Linux 容器。 如果 Docker Server 主機未設定為執行與項目目標相同的容器類型,您會看到類似下列的錯誤:

Docker 主機與專案不匹配的螢幕截圖。

要解決這個問題,請在系統托盤中右鍵點擊 Docker for Windows 圖示,選擇 Switch to Windows containers...切換到 Linux 容器......

ContainerToolsPackage 或 DockerComposePackage 沒有正確載入

損壞的受管理擴充框架(MEF)快取可能導致此問題。 要解決這個問題,請刪除你Visual Studio實例的 ComponentModelCache 資料夾。

  1. 關閉所有 Visual Studio 實例。

  2. 執行以下 PowerShell 指令以刪除 ComponentModelCache 資料夾:

    Get-ChildItem -Path "$(Join-Path $Env:LOCALAPPDATA "Microsoft\VisualStudio")" -Recurse -Include "ComponentModelCache" | Remove-Folder
    

你也可以手動刪除資料夾:

  1. 在檔案總管中開啟 \Microsoft\VisualStudio%localappdata% 。
  2. 打開對應你Visual Studio版本的子資料夾(例如 18.0_b653d53f)。
  3. 刪除 ComponentModelCache 資料夾。

其他問題

遇到其他問題,請參考 Microsoft/DockerTools。

參考資料

  • 容器工具錯誤訊息