我正在使用 docker 节点node:alpine
来构建容器,但我想以非 root 用户身份启动我的节点应用程序。与以 root 用户身份运行时相比,仅使用 adduser
和 addgroup
添加用户和组会使映像大小增加 300MB。
使用来自 alpine 测试存储库的shadow
也可以执行相同的操作(即将我的图像大小增加 300MB(。运行回声 http://nl.alpinelinux.org/alpine/edge/testing>>/etc/apk/repository
任何工具或任何建议如何创建非root用户,而不会大大增加图像的大小?
一种解决方案是将存储驱动程序从 aufs 切换到设备映射器,如此处所述。
或者,另一种解决方案是直接从主机复制资源,并在同一COPY
指令中设置所有者
COPY [--chown=<user>:<group>] <src>... <dest>
既然我不能发表评论,请一定忽略谢尔盖·雅罗茨基的回答。这是一个危险的误导性答案,这也是错误的。
例如,请阅读 https://medium.com/@mccode/processes-in-containers-should-not-run-as-root-2feae3f0df3b 为什么除非你真的明确需要,否则你永远不应该在容器中以root身份运行。
但是,您可以使用 docker run -u 运行容器来手动指定用户。