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