我正在努力强化我们的 docker 镜像,我已经对它有了一些薄弱的理解。话虽如此,我当前的步骤是阻止用户以 root 身份运行容器。对我来说,那是说“当用户运行 'docker exec -it my-container bash' 时,他将是一个非特权用户”(如果我错了,请纠正我)。
当我通过 docker-compose 启动我的容器时,运行的启动脚本需要以 root 身份运行,因为它处理导入证书和挂载的文件(在外部创建并通过卷挂载看到)。完成后,我希望用户成为“appuser”以供将来访问。这个问题似乎很符合我正在寻找的问题,但我使用的是 docker-compose,而不是 docker run: How to disable the root access of a docker container?
这似乎是相关的,因为启动命令不同于我们说的 tomcat。我们正在运行一个 Spring Boot 应用程序,我们使用简单的“java -jar jarFile”启动该应用程序,并且使用 maven 的 dockerfile-maven-plugin 构建映像。话虽如此,我应该在运行之前还是之后将用户更改为非特权用户?
我相信在 Dockerfile 中更改用户而不是启动脚本会做到这一点......但是它不会以 root 身份运行启动脚本,从而在需要 root 的调用中爆炸。我也使用过 ENTRYPOINT,但可能在那里做错了。类似地,在 yml 文件中使用“user:”似乎使 start.sh 脚本以该用户而不是 root 身份运行,因此这不起作用。
Dockerfile:
FROM parent/image:latest
ENV APP_HOME /apphome
ENV APP_USER appuser
ENV APP_GROUP appgroup
# Folder containing our application, i.e. jar file, resources, and scripts.
# This comes …Run Code Online (Sandbox Code Playgroud)