设置正确的用户时如何将VSCode附加到远程Docker容器

时间:2019-10-12 11:33:04

标签: docker visual-studio-code vscode-remote

我用一个特殊的bash脚本启动一个Docker容器,该脚本运行该容器,然后在容器中创建一个具有动态名称,UID和GUID的用户X。然后,我可以猛击到容器中,并以该用户X的身份执行操作。脚本还创建了一个名为vscode的“别名”用户,其用户标识与先前创建的动态用户X相同。

在VSCode中,我可以附加到此容器。两个问题:

  1. 如何设置VSCode以“ vscode”用户或X用户身份执行所有操作? (使用devcontainer.json创建容器时,这很简单,但是现在我附加到现有的容器上,并且不使用devcontainer.json)。
  2. 在devcontainer.json中,您可以选择自动安装扩展。我需要创建哪个设置文件才能在附加到容器时自动安装扩展程序?

解决方案应该是自动化的。例如。可以进行手动干预并按以下建议的方式提交映像,但这会使用户更难以使用我的Docker映像。

我更新到vscode 1.39并尝试添加:

off

但是“ server-env-setup”似乎仅用于WSL。

2 个答案:

答案 0 :(得分:1)

我将按照还原后的顺序回答您的问题:

VSCode使用docker exec命令在创建容器之后安装扩展。

现在,配方:最简单的方法是获取VSCode已经创建的容器:

  1. 运行“在容器上打开文件夹”以创建开发容器。
  2. 完成容器后,即可使用VSCode。通过单击“关闭远程连接”来停止环境。
  3. 运行docker ps -a。您应该看到上次死亡的容器如下: last running docker images
  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 documentation的容器时,您可以查看remote machines并使用devcontainer.json配置。

答案 1 :(得分:1)

VSCode现在实现了可以在映像配置中设置的“ remoteUser”属性。这将确保VSCode以正确的用户身份登录到容器。