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

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

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

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

    我更新到vscode 1.39并尝试添加:
    ADD server-env-setup /root/.vscode-server/server-env-setup
    

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

    最佳答案

    我将以还原顺序回答您的问题:

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

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

  • 运行“在容器上打开文件夹”以创建dev容器。
  • 容器完成后,即可使用VSCode。通过单击“关闭远程连接”来停止环境。
  • 运行docker ps -a。您应该看到上次死亡的容器如下:
    docker - 设置正确的用户时如何将VSCode附加到远程Docker容器-LMLPHP
  • 如何查看最新运行的容器是:a7aa5af7ec08 vsc-typescript-2ea9f347739c5397afc431028000c02b。这是您安装了所有扩展程序的容器。手动安装扩展或通过devcontainer.json配置都无所谓。
  • 运行docker commit a7aa5af7ec08 all-installed-vscode-image:latest。现在,您已安装了所有喜爱的软件的docker镜像。您可以将该镜像上传到您最喜欢的docker注册表,并在其他计算机上使用。
  • 现在您可以运行docker run -i -u vscode all-installed-vscode-image:latest。并将vscode附加到此容器。这是您第一个问题的答案。

  • 另外,当您附加到已经在运行的容器,甚至是在vscode documentation上运行的容器时,您可以查看remote machines并使用devcontainer.json配置。

    08-07 21:08