開發容器常見問題解答
本文件包含了一些關於在不同環境中成功設定並執行 Dev Containers 擴充套件的常見問題。
“開發容器定義”是否定義了應用程式的部署方式?
否。開發容器定義的是在您準備部署應用程式之前用於開發應用程式的環境。雖然部署容器和開發容器可能看起來相似,但您可能不希望在部署映象中包含開發過程中使用的工具。
devcontainers/templates 倉庫包含了一組針對一些常見開發環境的開發容器定義。如果您傾向於使用備用的容器構建或部署工作流,您也可以在不設定開發容器定義的情況下 連線到正在執行的容器。
“開發容器定義”是否定義了應用程式的構建方式?例如 Buildpacks?
否。 Buildpacks 的概念側重於獲取原始碼並透過一系列定義的步驟生成可部署的容器映象。開發容器是您在準備構建之前可以開發應用程式的環境。因此,它們是互補的概念。
在嘗試將本地檔案系統掛載到容器時遇到錯誤
右鍵單擊 Docker 工作列項。在 Windows 上,選擇 **設定** 選單項,然後選擇 **資源 > 檔案共享**,並勾選包含原始碼的驅動器。在 macOS 上,選擇 **偏好設定** 選單項,然後選擇 **資源 > 檔案共享**,並確保您的原始碼所在的資料夾位於檔案共享列表中的路徑下。
有關解決 Docker for Windows 常見問題的變通方法的資訊,請參閱 Docker Desktop for Windows 提示。
出現關於缺少庫或依賴項的錯誤
某些擴充套件依賴於特定 Docker 映象中不存在的庫。例如,Visual Studio Live Share 需要安裝系統級依賴項,這些依賴項 在其文件中有列出。這些依賴項的需求可能取決於您的 Docker 映象使用的作業系統(例如,特定的 Linux 發行版)。您可能需要在 Docker 構建過程中安裝這些依賴項,方法是將所需的命令新增到 Dockerfile 中。搜尋特定擴充套件的文件以檢查依賴項,並參閱 安裝其他軟體 以獲取解決問題的幫助。
我能否同時連線到多個容器?
一個 VS Code 視窗目前只能連線到一個視窗,但您可以開啟一個新視窗並 連線 到一個已執行的容器,或者 使用包含多個 devcontainer.json 檔案的通用 Docker Compose 檔案 來進一步自動化此過程。
我能否在遠端主機上使用容器?
是,請參閱關於 在遠端 SSH 主機上開啟資料夾 或 在容器中開啟遠端隧道主機上的資料夾 的部分以獲取資訊。
在容器內工作時,如何將容器映象構建或部署到我的本地 Docker / Kubernetes 安裝?
您可以透過轉發 Docker 套接字並在容器中安裝 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.comvscode.download.prss.microsoft.com
開發容器擴充套件將在連線後在本地下載 VS Code Server 並將其複製到容器中。
您可以使用 **擴充套件:從 VSIX 安裝...** 命令手動安裝擴充套件而無需網際網路連線,但如果您使用擴充套件面板或 devcontainer.json 來安裝擴充套件,您的本地計算機和 VS Code Server 將需要到以下地址的出站 HTTPS (埠 443) 訪問:
marketplace.visualstudio.com*.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 檔案參考
- Docker Desktop for Windows 故障排除指南 和 常見問題解答
- Docker Desktop for Mac 故障排除指南 和 常見問題解答
我能否在 VS Code 之外使用開發容器?
隨著生產工作負載容器化日益普及,開發容器已在 VS Code 之外的場景中變得有用。我們正在建立 開發容器規範,以使任何工具中的任何人都能配置一致的開發環境。它旨在尋找方法來豐富現有的格式,其中包含常見的開發特定設定、工具和配置,同時仍提供簡化的、非編排的單容器選項——以便它們可以用作編碼環境或用於持續整合和測試。
您可以在 containers.dev 上了解更多資訊並查閱規範,您可以在 GitHub 上的 devcontainers/spec 倉庫中查閱活動的提案併為規範做出貢獻。