以root以外的用户身份附加到Visual Studio代码中的远程docker容器

时间:2020-07-21 21:04:09

标签: docker visual-studio-code

我正在将VSCode与Docker扩展一起使用。我正在通过SSH连接到远程计算机上的docker。 当我在docker扩展中单击一个容器并执行“附加Visual Studio代码”时,如果该容器是由root用户启动的,则它可以很好地连接。如果以不同的uid / gid开始,则得到以下信息。并不是说该映像已从dockerfile中正确设置了用户和组。

[4909 ms] 
[4910 ms] Start: Run in container: cat /etc/passwd
[4947 ms] User 33333:45678 not found in /etc/passwd.
[4948 ms] Start: Run in container: test -d /root/.vscode-server
[4982 ms] 
[4982 ms] 
[4982 ms] Exit code 1
[4982 ms] Start: Run in container: test -d /root/.vscode-remote
[5019 ms] 
[5019 ms] 
[5019 ms] Exit code 1
[5019 ms] Start: Run in container: set -o noclobber ; mkdir -p '/root/.vscode-server/data/Machine' && { > '/root/.vscode-server/data/Machine/.writeMachineSettingsMarker' ; } 2> /dev/null
[5057 ms] 
[5057 ms] mkdir: cannot create directory ‘/root’: Permission denied
[5058 ms] Exit code 1
[5059 ms] Start: Run in container: test -d /root/.vscode-server/bin/d5e9aa0227e057a60c82568bf31c04730dc15dcd
[5095 ms] 
[5096 ms] 
[5096 ms] Exit code 1
[5096 ms] Installing VS Code Server for commit d5e9aa0227e057a60c82568bf31c04730dc15dcd
[5096 ms] Start: Run in container: mkdir -p /root/.vscode-server/bin/d5e9aa0227e057a60c82568bf31c04730dc15dcd_1595365126276
[5133 ms] 
[5134 ms] mkdir: cannot create directory ‘/root’: Permission denied
[5134 ms] Exit code 1

1 个答案:

答案 0 :(得分:0)

我用蛮力解决了一个类似的问题。我直接在Dockerfile中添加了一个特定用户(首先定义它们所属的组):

RUN groupadd --gid $GID $GROUPNAME
RUN useradd --uid $UID --gid $GID -m $USERNAME

,然后在docker-compose中,在我要使用该特定UID / GID登录的所有服务下添加以下行:

user: $USERNAME

对于docker-compose,您需要先显式导出用户名,然后再构建容器:

export USERNAME="Max Mustermann"

(当然,除非您使用自己的本地用户名,在这种情况下,只写user: $USER而不导出任何内容就足够了。

在Dockerfile中添加用户的原因是,您希望在/etc/passwd中列出用户数据,以便VSCode可以选择它们。如果您无权访问Dockerfile,还可以制作一个小的Shell脚本,该脚本将作为默认(根)用户附加到容器,并随后添加所需的UID / GID。

此VSCode之后,将以该特定用户的身份自动附加到容器。