在具有较小图像大小的Docker Alpine图像中创建非root用户?

时间:2018-01-16 15:53:13

标签: node.js docker alpine

我正在使用docker node node:alpine来构建容器,但我想以非root用户身份启动我的节点应用程序。 只需使用adduseraddgroup添加用户和组,与以root用户身份运行时相比,图片大小增加了300MB。

使用来自alpine test repo的shadow也会做同样的事情(即将图像的大小增加300MB)。 RUN echo http://nl.alpinelinux.org/alpine/edge/testing>>的/ etc / APK /存储库

任何工具或任何建议如何创建非root用户而不会过多地增加图像的大小?

3 个答案:

答案 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”用户。

相关问题