簡體   English   中英

如何在設置正確的用戶時將 VSCode 附加到遠程 Docker 容器

[英]How to attach VSCode to a remote Docker container while setting the correct user

我使用運行容器的特殊 bash 腳本啟動 Docker 容器,然后在容器中創建具有動態名稱、UID 和 GUID 的用戶 X。 然后我可以將 bash 放入容器中,並以該用戶 X 的身份執行操作。該腳本還創建了一個名為 vscode 的“別名”用戶,其 UID 與之前創建的動態用戶 X 相同。

在 VSCode 中,我可以附加到這個容器。 兩個問題:

  1. 如何設置 VSCode 以作為“vscode”用戶或用戶 X 執行所有操作? (當使用 devcontainer.json 創建容器時,這很簡單,但現在我附加到現有容器並且 devcontainer.json 未使用)。
  2. 在 devcontainer.json 中,您可以選擇自動安裝擴展。 附加到容器時,我需要創建哪個設置文件來自動安裝擴展?

解決方案應該是自動化的。 例如。 可以按照下面的建議進行手動干預和提交圖像,但會使用戶更難僅使用我的 Docker 圖像。

我更新到 vscode 1.39 並嘗試添加:

ADD server-env-setup /root/.vscode-server/server-env-setup

但是“server-env-setup”似乎只用於 WSL。

我將按相反的順序回答您的問題:

VSCode 在使用docker exec命令創建容器后安裝擴展。

現在配方:最簡單的方法是使用 VSCode 已經創建的容器:

  1. 運行“在容器上打開文件夾”以創建開發容器。
  2. 容器完成后,您可以使用 VSCode。 通過單擊“關閉遠程連接”停止您的環境。
  3. 運行docker ps -a 您應該看到最后死亡的容器如下: 最后運行的 docker 圖像
  4. 如何查看最新運行的容器是:a7aa5af7ec08 vsc-typescript-2ea9f347739c5397afc431028000c02b。 這是您安裝了所有擴展的容器。 無論您如何手動安裝擴展或通過 devcontainer.json 進行配置,都無關緊要。
  5. 運行docker commit a7aa5af7ec08 all-installed-vscode-image:latest 現在您有了一個 docker 映像,其中安裝了您喜愛的所有軟件。 您可以將此圖像上傳到您最喜歡的 docker 注冊表並在其他機器上使用。
  6. 現在您可以運行docker run -i -u vscode all-installed-vscode-image:latest 並將 vscode 附加到這個容器。 這是您第一個問題的答案。

此外,當您附加到已經運行的容器甚至在遠程機器上運行的容器時,您可以查看vscode 文檔並使用 devcontainer.json 配置。

VSCode 現在實現了一個“remoteUser”屬性,您可以在圖像配置中設置它。 這將確保 VSCode 以正確的用戶身份登錄到容器中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM