我正在使用docker node node:alpine
来构建容器,但我想以非root用户身份启动我的节点应用程序。
只需使用adduser
和addgroup
添加用户和组,与以root用户身份运行时相比,图片大小增加了300MB。
使用来自alpine test repo的shadow
也会做同样的事情(即将图像的大小增加300MB)。
RUN echo http://nl.alpinelinux.org/alpine/edge/testing>>的/ etc / APK /存储库
任何工具或任何建议如何创建非root用户而不会过多地增加图像的大小?
答案 0 :(得分:2)
一种解决方案是按照here所述将存储驱动程序从aufs切换到设备映射器。
或者,另一种解决方案是直接从主机复制资源并将所有者设置为相同的COPY
指令
COPY [--chown=<user>:<group>] <src>... <dest>
答案 1 :(得分:1)
由于我无法发表评论,请务必忽略谢尔盖·亚罗茨基的回答。这是一个危险的误导性答案,这也是错误的。
请阅读例如https://medium.com/@mccode/processes-in-containers-should-not-run-as-root-2feae3f0df3b,了解除非您真正明确需要,否则不要在容器中以root身份运行。
但是,您可以使用docker run -u来运行容器,以手动指定用户。
答案 2 :(得分:-1)
我知道这不是你问题的确切答案,但我认为你误解了docker的概念。我找不到在非root用户的容器内运行进程的任何意义。应用程序内部的应用程序隔离设计,因此它无法访问主机文件系统(除非作为卷安装),进程等。如果您仍有疑虑,则应将docker本身作为非root用户运行。然后限制“docker”用户。