🚀 在 VS Code 中

Dev Containers 常見問題

本文包含一些常見問題,關於在不同環境中啟動並執行Dev Containers擴充功能。

「開發容器定義」是否定義應用程式的部署方式?

否。開發容器定義一個環境,您在其中開發應用程式,然後才準備好部署。雖然部署和開發容器可能彼此相似,但您可能不希望在部署映像中包含您在開發期間使用的工具。

devcontainers/templates 儲存庫包含一組適用於某些常見開發環境的開發容器定義。如果您偏好使用替代的容器建置或部署工作流程,您也可以連接到執行中的容器,而無需設定開發容器定義。

「開發容器定義」是否定義應用程式的建置方式?例如 Buildpacks?

否。「Buildpacks」概念著重於取得原始碼,並透過一系列定義的步驟產生可部署的容器映像。開發容器是您可以開發應用程式的環境,然後才準備好建置。因此,它們是互補的概念。

嘗試將本機檔案系統掛載到容器時,看到錯誤

在 Docker 工作列項目上按一下滑鼠右鍵。在 Windows 上,選取 [設定] 功能表項目,然後選取 [資源] > [檔案共用],並檢查原始碼所在的磁碟機。在 macOS 上,選取 [偏好設定] 功能表項目,然後選取 [資源] > [檔案共用],並確認包含原始碼的資料夾位於清單中指定的檔案路徑下。

請參閱「Docker Desktop for Windows 提示」,以取得關於常見 Docker for Windows 問題的解決方案資訊。

看到關於缺少程式庫或相依性的錯誤

某些擴充功能依賴於特定 Docker 映像中找不到的程式庫。例如,Visual Studio Live Share 需要安裝系統層級的相依性,這些相依性已列在其文件中。這些相依性的需求可能取決於 Docker 映像使用的作業系統 (例如,特定的 Linux 發行版)。您可能需要在 Docker 建置過程中安裝這些相依性,方法是將必要的命令新增至 Dockerfile。搜尋特定擴充功能的文件以檢查相依性,並參閱安裝其他軟體以取得解決問題的協助。

可以一次連接到多個容器嗎?

一個 VS Code 視窗目前只能連接到一個視窗,但您可以開啟一個新視窗並連接到已在執行的容器,或使用具有多個 devcontainer.json 檔案的通用 Docker Compose 檔案來稍微自動化此程序。

可以在遠端主機上使用容器嗎?

是的,請參閱關於在遠端 SSH 主機上開啟資料夾在容器中遠端通道主機上開啟資料夾的章節以取得資訊。

當在容器內工作時,如何將容器映像建置或部署到本機 Docker / Kubernetes 安裝?

您可以透過轉送 Docker socket 並在容器中安裝 Docker CLI (和 Kubernetes 的 kubectl) 來建置映像並部署容器。如需詳細資訊,請參閱「Docker outside of Docker」、「Docker outside of Docker Compose」和「Kubernetes-Helm」開發容器定義。

VS Code Server 在容器中執行時的連線需求為何?

安裝 VS Code Server 需要您的本機電腦具有連外的 HTTPS (連接埠 443) 連線能力,才能連線到

  • update.code.visualstudio.com
  • vscode.blob.core.windows.net
  • *.vo.msecnd.net (Azure CDN)

Dev Containers 擴充功能會在連線後在本機下載 VS Code Server 並將其複製到容器。

您可以使用「擴充功能: 從 VSIX 安裝...」命令手動安裝擴充功能,而無需網際網路連線,但如果您使用擴充功能面板或 devcontainer.json 安裝擴充功能,則您的本機電腦和 VS Code Server 將需要連外的 HTTPS (連接埠 443) 存取權,才能存取

  • marketplace.visualstudio.com
  • *.vo.msecnd.net (Azure CDN)
  • *.gallerycdn.vsassets.io (Azure CDN)

最後,某些擴充功能 (例如 C#) 會從 download.microsoft.comdownload.visualstudio.microsoft.com 下載次要相依性。其他擴充功能 (例如 Visual Studio Live Share) 可能有額外的連線需求。如果您遇到問題,請參閱擴充功能的文件以取得詳細資訊。

VS Code Server 在容器內的隨機連接埠上執行,而 VS Code 本身使用 docker exec 透過 Docker 的設定通訊通道與其通訊。

身為擴充功能作者,我需要做什麼來確保我的擴充功能可以運作?

VS Code 擴充功能 API 隱藏了遠端執行的許多實作細節,因此許多擴充功能在開發容器內都能正常運作,而無需任何修改。但是,我們建議您在開發容器中測試您的擴充功能,以確保其所有功能都能如預期般運作。如需詳細資訊,請參閱關於支援遠端開發的文章。

還有哪些其他資源可能可以回答我的問題?

以下文章可能可以協助回答您的問題

我可以在 VS Code 之外使用開發容器嗎?

隨著容器化生產工作負載變得司空見慣,開發容器已變得適用於 VS Code 以外的案例。我們正在建立「開發容器規格」,以授權任何工具中的任何人設定一致的開發環境。它尋求尋找方法來豐富現有格式,使其具有常見的開發特定設定、工具和組態,同時仍提供簡化的、未協調的單一容器選項 — 以便它們可以用作程式碼撰寫環境或用於持續整合和測試。

您可以在 containers.dev 上瞭解更多資訊並檢閱規格,並且可以在 GitHub 上的 devcontainers/spec 儲存庫中檢閱現有提案並為規格做出貢獻。