Dev Containers 常見問題集
本文包含一些常見問題,協助您在不同環境中啟動並執行 Dev Containers 擴充功能。
「開發容器定義」是否定義應用程式的部署方式?
否。開發容器定義您在準備部署應用程式之前開發應用程式的環境。雖然部署和開發容器可能彼此相似,但您可能不想在部署映像中包含您在開發期間使用的工具。
devcontainers/templates 存放庫包含一組適用於一些常見開發環境的開發容器定義。如果您偏好使用替代容器組建或部署工作流程,您也可以附加至執行中的容器,而無需設定開發容器定義。
「開發容器定義」是否定義應用程式的組建方式?例如 Buildpacks?
否。Buildpacks 概念著重於取得原始程式碼,並透過一系列定義的步驟產生可部署的容器映像。開發容器是您可以開發應用程式的環境,然後才能準備好組建。因此,它們是互補的概念。
嘗試將本機檔案系統掛載到容器時,看到錯誤訊息
在 Docker 工作列項目上按一下滑鼠右鍵。在 Windows 上,選取 [設定] 功能表項目,然後選取 [資源 > 檔案共用],並勾選您的原始程式碼所在磁碟機。在 macOS 上,選取 [喜好設定] 功能表項目,然後選取 [資源 > 檔案共用],並確定包含原始程式碼的資料夾位於清單中指定的檔案路徑下。
請參閱適用於 Windows 的 Docker Desktop 秘訣,以取得關於常見 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.com
或 download.visualstudio.microsoft.com
下載次要相依性。其他擴充功能 (例如 Visual Studio Live Share) 可能有其他連線能力需求。如果您遇到問題,請參閱擴充功能的文件以取得詳細資訊。
VS Code Server 會在容器內的隨機連接埠上執行,而 VS Code 本身會使用 docker exec
,透過 Docker 的設定通訊通道與其通訊。
身為擴充功能作者,我需要做什麼才能確保我的擴充功能正常運作?
VS Code 擴充功能 API 隱藏了遠端執行的多數實作詳細資訊,因此許多擴充功能都可以在開發容器內正常運作,而無需進行任何修改。不過,我們建議您在開發容器中測試您的擴充功能,以確保其所有功能都如預期般運作。如需詳細資訊,請參閱關於支援遠端開發的文章。
是否有其他資源可以回答我的問題?
下列文章可能有助於回答您的問題
- 進階容器組態或祕訣與訣竅
- Dockerfile 參考
- Docker Compose 檔案參考
- 適用於 Windows 的 Docker Desktop 疑難排解指南和常見問題集
- 適用於 Mac 的 Docker Desktop 疑難排解指南和常見問題集
- Docker 支援資源
我可以在 VS Code 外部使用開發容器嗎?
隨著容器化生產工作負載變得司空見慣,開發容器已變得適用於 VS Code 以外的案例。我們正在建立開發容器規格,以便讓任何人在任何工具中都能設定一致的開發環境。它旨在尋找方法,以使用常見的開發特定設定、工具和組態來豐富現有格式,同時仍提供簡化的、未協調的單一容器選項 – 讓它們可以用於程式碼撰寫環境或持續整合和測試。
您可以在 containers.dev 深入了解並檢閱規格,而且您可以在 GitHub 上的 devcontainers/spec 存放庫中檢閱現行提案並為規格做出貢獻。