開發容器常見問題
本文包含一些關於在不同環境中設定和執行 開發容器 擴充套件的常見問題。
“開發容器定義”是否定義了應用程式的部署方式?
不是。開發容器定義了在部署應用程式之前用於開發應用程式的環境。雖然部署容器和開發容器可能相似,但您可能不希望在部署映象中包含開發期間使用的工具。
devcontainers/templates 倉庫 包含一組用於常見開發環境的開發容器定義。如果您更喜歡使用替代的容器構建或部署工作流,您也可以在不設定開發容器定義的情況下連線到正在執行的容器。
“開發容器定義”是否定義了應用程式的構建方式?例如 Buildpacks?
不是。Buildpacks 概念側重於透過一系列定義的步驟獲取原始碼並生成可部署的容器映象。開發容器是您在準備構建之前可以開發應用程式的環境。因此,它們是互補的概念。
嘗試將本地檔案系統掛載到容器中時出現錯誤
右鍵單擊 Docker 工作列專案。在 Windows 上,選擇 Settings 選單項,然後選擇 Resources > File Sharing,並檢查您的原始碼所在的驅動器。在 macOS 上,選擇 Preferences 選單項,然後選擇 Resources > File Sharing,並確保包含您的原始碼的資料夾在列表中指定的檔案路徑下。
有關常見 Docker for Windows 問題的解決方法,請參閱適用於 Windows 的 Docker Desktop 提示。
我看到一個關於缺少庫或依賴項的錯誤
某些擴充套件依賴於特定 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 伺服器在容器中執行時,其連線要求是什麼?
安裝 VS Code 伺服器要求您的本地機器具有到以下地址的出站 HTTPS(埠 443)連線:
update.code.visualstudio.com
vscode.download.prss.microsoft.com
連線後,開發容器擴充套件將在本地下載 VS Code 伺服器並將其複製到容器中。
您可以使用擴充套件:從 VSIX 安裝... 命令在沒有網際網路連線的情況下手動安裝擴充套件,但如果您使用擴充套件面板或 devcontainer.json
安裝擴充套件,您的本地機器和 VS Code 伺服器將需要出站 HTTPS(埠 443)訪問:
marketplace.visualstudio.com
*.gallerycdn.vsassets.io
(Azure CDN)
最後,一些擴充套件(如 C#)從 download.microsoft.com
或 download.visualstudio.microsoft.com
下載次要依賴項。其他擴充套件(如 Visual Studio Live Share)可能有額外的連線要求。如果你遇到問題,請查閱擴充套件的文件以獲取詳細資訊。
VS Code 伺服器在容器內部的隨機埠上執行,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倉庫中檢視活躍的提案併為規範做出貢獻。