繁体   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