You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Docker镜像添加仅拥有Jar文件只读权限的无root用户?

配置Docker镜像实现无root用户只读Jar文件

假设你的Jar文件最终会放在镜像内的/app/myapp.jar路径,可按以下步骤完成权限配置:

  1. 复制Jar文件到镜像指定目录
    先以root身份将Jar文件复制到镜像中,示例指令:

    COPY target/myapp.jar /app/myapp.jar
    
  2. 设置目录与Jar文件的权限
    确保Jar文件仅开放读权限,同时所在目录允许用户进入:

    RUN mkdir -p /app \
        # 目录设为所有用户可进入、可读
        && chmod 755 /app \
        # Jar文件设为所有用户只读
        && chmod 444 /app/myapp.jar
    
  3. 切换到自定义用户运行容器
    在Dockerfile末尾添加USER指令,切换至之前创建的非root用户:

    USER $USERNAME
    
  4. 可选:权限验证
    构建镜像时可临时添加验证命令,确认用户无法修改Jar文件:

    RUN su $USERNAME -c "echo test >> /app/myapp.jar" || echo "权限验证通过:无法修改Jar文件"
    

完整Dockerfile片段示例

ARG USERNAME=MyCustomUser
ARG USER_UID=10001
ARG USER_GID=$USER_UID

RUN groupadd --gid $USER_GID $USERNAME \
    && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME

# 复制Jar并配置权限
COPY target/myapp.jar /app/myapp.jar
RUN mkdir -p /app \
    && chmod 755 /app \
    && chmod 444 /app/myapp.jar

# 切换非root用户
USER $USERNAME

# 启动应用
CMD ["java", "-jar", "/app/myapp.jar"]

关键说明

  • 目录/app设为755,保证自定义用户能进入目录访问Jar文件;
  • Jar文件设为444,所有用户仅拥有读权限,满足Java运行Jar的需求;
  • 全程先用root完成文件复制与权限配置,最后切换用户,避免无权限操作文件系统。

内容的提问来源于stack exchange,提问作者andrew17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:57:41