9817.txt.txt
Edited: Thursday 1 May 2025

Saturday, July 31, 2021 at 17:45

将 non-root 用 户 添 加 到 开 发 容 器 中

一 大 加 贝

没 有 成 功
non-root 即 非 root, 意 思 是 没 有 管 理 员 权 限 ( 根 权 限 ) 。

默 认 的 Docker 镜 像 使 用 的 是 root 用 户 作 为 默 认 用 户 , 但 是 实 际 开 发
中 , 我 需 要 non-root 用 户 , 这 样 使 运 行 环 境 更 安 全 。

为 VS Code (server) 指 定 用 户

如 果 你 使 用 的 镜 像 或 Dockerfile 已 经 提 供 了 一 个 可 供 选 择 的 non-root
用 户 , 但 默 认 默 认 用 户 仍 然 是 root。 可 以 选 择 让 VS Code (server)
和 任 何 子 进 程 ( 终 端 、 任 务 、 调 试 ) 使 用 它 , 方 法 是 在
devcontainerjson 中 指 定 remoteUser 属 性 :

1“remoteUser“: “user-name-goes-here“

在 Linux 上 , 如 果 在 devcontainerjson 中 引 用 Dockerfile 或 映 像 , 这 还
将 自 动 更 新 容 器 用 户 的 UID/GID 以 匹 配 的 本 地 用 户 , 从 而 避 免 此 环 境 中
存 在 的 绑 定 装 入 权 限 问 题 ( 除 非 设 置 了 “updateremoteuserid“:
false)。 在 Docker Compose 实 例 中 , 容 器 用 户 的 UID/GID 不 会 被 更
新 , 但 是 可 以 在 Dockerfile 中 手 动 更 改 这 些 值 。

由 于 此 设 置 仅 影 响 VS 代 码 和 相 关 子 过 程 , 因 此 需 要 重 新 启 动 VS 代 码
( 或 重 新 加 载 窗 口 ) 才 能 生 效 。 但 是 ,UID/GID 更 新 仅 在 创 建 容 器 时 应
用 , 并 且 需 要 重 新 生 成 才 能 更 改 。

介 | 十 nhn_rnn+ 田 户
o E T

用 , 并 且 需 要 重 新 生 成 才 能 更 改 。
创 建 non-root 用 户

RARRG USERNAME=user-name-goes-here

3 RRG USER_UID=1000
3 ARG USER_GID=\(USER_UID 一 Create the user 6 RUN groupadd --gid \) USER_GID \(USERNAME 、 7 && useradd =-uid \) USER_UID –gid \(USER_GID -m \) USERNAME

8 水 [Optional] Add sudo support。0mit if you don t need to install software after
10 connecting 。

11 E& apt-get Update
12 E8& apt-get itnstall -y Sudo
&& echo \(USERNAME RLL=\ (Foot\) NOPASSWND:ALD > /etc/sudoers .d/\) USERNAME \

1 && chmod 0440_/etc/sudoers .d/$USERNAME
k

17 水 x Anythtng else you want to do ltke clean up goes here +
菊 标定 定 宏 标定 林 洁 宏 林 宏 许 河

时 3 一 [Optional] Set the default user。Omit if you want to keep the default as root。
USER $USERNAME

改 变 已 存 在 用 户 的 UID/GID

当 remoteUser 属 性 在 Linux 上 使 用 Dockerfile 或 镜 像 时 尝 试 根 据 需
自 动 更 新 UID/GID 时 , 可 以 使 用 Dockerfile 中 的 这 个 代 码 片 段 手 动 更 改
用 户 的 UID/GID。 根 据 需 要 更 新 ARG 值 。

1 ARG USERNAME=uger-name-goes-here
2 RRG USER_UID=1000
3 ARG USER_GID=$USBR_UID

5 RUN groupmod –gid \(USER_GID \) USERNAME
6 “&g& usermod ~-uid \(USER_UID --gid \) USER_GID \(USERNAME \ 7 gg chown -R \) USER_UID:\(USER_GID /home /\) USERNAME

ref:

https:/codewisualstudio.ccomy/docs/remote/containers-