USER 非 root
为什么不用 root
容器以 root 运行 → 容器逃逸 = 宿主机 root
最佳实践:用非 root 用户运行应用
语法
FROM node:18
# 创建用户
RUN groupadd -r app && useradd -r -g app app
# 设置工作目录并修改权限
WORKDIR /app
COPY --chown=app:app . .
# 切换用户
USER app
CMD ["node", "server.js"]
Alpine 镜像
FROM alpine:3.18
RUN addgroup -S app && adduser -S app -G app
USER app
何时用 root
# 安装软件时用 root
USER root
RUN apt-get update && apt-get install -y curl
# 运行应用时切换
USER app
小结
| 指令 | 作用 |
|---|---|
USER | 切换运行用户 |
--chown | 设置文件所有者 |
| 安全最佳实践 | 应用不用 root |