非 root 运行
为什么不用 root
容器以 root 运行 → 容器逃逸 = 宿主机 root 权限
Dockerfile 设置
FROM node:18
RUN groupadd -r app && useradd -r -g app app
WORKDIR /app
COPY --chown=app:app . .
USER app
CMD ["node", "server.js"]
运行时指定
# 用 -u 指定用户
docker run -u 1000:1000 my-app
# 用用户名
docker run -u app my-app
检查
# 查看容器运行用户
docker exec my-app whoami
docker exec my-app id
小结
| 方法 | 说明 |
|---|---|
USER | Dockerfile 中设置 |
-u | 运行时指定 |
| 最佳实践 | 应用不用 root |