为什么Docker官方图像不按照“最佳实践”的要求使用USER

时间:2016-03-21 17:34:30

标签: docker dockerfile

Postgres,mariadb,mysql不使用USER。据推测,我们会审核官方图片是否符合最佳实践文档,尽可能requires USER。为什么呢?

1 个答案:

答案 0 :(得分:4)

从根本上说,USER在官方图片中。它与“开始用户应该docker run official-image bash无需了解--entrypoint”的要求相冲突。如果您没有root,则无法编辑配置文件,安装strace等软件包,特别是修复卷中的UID。实际上,官方形象风格 被认为是(a)最佳实践。 (因此Docker用户指南应该强调以非root用户身份运行守护进程,而不是特别关注USER)

IMO这是一个问题。您可以学习的流行示例并未显示需要设置固定UID。否则,如果使用添加其他用户的基本映像进行更新,则必须手动进行干预。最佳实践说你应该考虑设置固定的UID,但它们甚至没有显示它的例子。因此prominent使用USER的simple Dockerfiles示例不会设置固定的UID。官方图像也没有设置固定的UID - 假装这样不是问题 - 而是强制数据卷chown,因为它们的入口点脚本以root身份运行。不太令人印象深刻。

从技术上讲,可以通过添加更多chown和UID交换到Dockerfile来修复官方Dockerfiles,但这似乎是不可取的。

我认为另一种选择是路径依赖的更新。也就是说,保持chown,直到每个人都完成对固定UID的自动更新(几个月?),然后放弃它。