33·Dockerfile进阶

USER 非 root

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

练习编辑器

bash
Loading...