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

问题描述 投票:0回答:2

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

我正在构建 Kotlin 项目(两步构建),我现在的目标是以非 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 dockerfile docker-build
2个回答
18
投票

为了使用 Docker,您不需要成为 root 用户,只需成为 docker 用户组的成员即可。

在 Linux 上:

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

0
投票
  1. 运行 adduser -D 约翰
  2. 用户约翰 在 docker 文件中给出这两行。应该在最后阶段的 from 之后添加。
© www.soinside.com 2019 - 2024. All rights reserved.