首页/云/云与容器速查/Dockerfile USER 运行用户
容器与 Docker106 条

Dockerfile USER 运行用户

指定后续指令与容器进程的默认用户。安全基线要求不用 root 跑应用:先建用户、调整目录属主,再切 USER;系统级安装必须放在切换之前。

云与容器速查云更新于 2026-10-12
作用其后指令与容器默认运行身份
前置先 groupadd/useradd 创建用户,或用数字 UID 直写
文件归属USER 后 RUN 产生文件归该用户;复制文件用 COPY --chown 更直接
运行时覆盖docker run -u 可临时指定其他用户

非 root 运行示例

非 root 运行示例
RUN groupadd --system app && useradd --system --gid app --home /app app
WORKDIR /app
COPY --chown=app:app . .
USER app
CMD ["./server"]
USER 之后 RUN 不再有 root 权限:装包、写 /etc 都会失败,系统级操作全部要放前面。

易错点

  • 切了 USER 没改文件属主:应用无权限写目录,启动即崩
  • 用 --chown 只对 COPY 有效:RUN 生成的文件还得手动 chown

数据来源与参考

  • Docker Docs:Dockerfile reference(USER)
  • CIS Docker Benchmark(非 root 运行)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌