以非 root 用户身份构建 Docker 图像

Building Docker image as non root user

新来的,想知道是否有人有以非 root 用户身份构建映像的经验?

我正在构建 Kotlin 项目(2 步构建),我现在的目标是以非 root 用户身份构建它。这是我的 Dockerfile 的样子。任何帮助将不胜感激:

# Build
FROM openjdk:11-jdk-slim as builder

# Compile application
WORKDIR /root
COPY . .
RUN ./gradlew build

FROM openjdk:11-jre-slim

# Add application
COPY --from=builder /root/build/libs/*.jar ./app.jar

# Set the build version
ARG build_version
ENV BUILD_VERSION=$build_version

COPY docker-entrypoint.sh /
RUN chmod 777 /docker-entrypoint.sh
CMD /docker-entrypoint.sh

要使用 Docker,您不需要成为 root 用户,您只需要在 docker 用户组中。

在 Linux:

  1. 如果还没有 docker 组,您可以使用命令 sudo groupadd docker.
  2. 创建一个
  3. 使用命令 sudo usermod -aG docker [username of user].
  4. 将您自己和您希望能够访问 docker 的任何其他用户添加到该组
  5. 重新登录,以便Linux可以重新评估用户组。

如果您不想 运行 作为 root 命令,而是想 运行 非 root 容器,您可以使用以下 DOCKERFILE 内容(插入在 FROM 之后但在其他任何事情之前。)

# Add a new user "john" with user id 8877
RUN useradd -u 8877 john
# Change to non-root privilege
USER john