背景
k8s集群运行镜像,要求容器运行时用户不能是root,由于本人对docker命令了解不深,在多方查询资料后,找到了合适的方式
以xxl-job-admin为例,基于公网镜像,,创建以appuser用户为运行时用户的docker镜像
dockerfile
FROM xuxueli/xxl-job-admin:2.2.0
MAINTAINER wmxwz
#创建appuser用户
RUN adduser --system --no-create-home appuser
#创建data路径,xxl-job-admin会往该路径写日志
RUN mkdir /data && chown appuser /data
ENV APP_DATA_DIR=/data
#该权限
RUN chown appuser /bin
RUN chown appuser /usr
RUN chown appuser /app.jar
ENV PARAMS=“”
#切换用户
USER appuser
#执行
ENTRYPOINT [“sh”,“-c”,“java -jar $JAVA_OPTS /app.jar $PARAMS”]
结语
以上方式测试可用,暂未遇到其他问题,后续有其他问题再更新
参考
http://www.ay1.cc/article/26047.html
https://github.com/xuxueli/xxl-job/blob/master/xxl-job-admin/Dockerfile
https://www.saoniuhuo.com/question/detail-2153394.html
https://fiime.cn/blog/238946
https://blog.51cto.com/ghostwritten/5345338