Postgres,mariadb,mysql不使用USER。据称,对官方图像进行了审核,以确保它们符合最佳实践文档的要求,如果可能,可以在requires USER中找到该文档。为什么?

最佳答案

从根本上来说,USER在官方图片中是不可能的。它与“初学者无需了解--entrypoint即可开始docker run official-image bash”的要求相冲突。如果您没有root用户,则无法编辑配置文件,无法安装strace之类的程序包,特别是无法在卷中修复UID。实际上,官方图像样式被认为是(a)最佳实践。 (因此,Docker用户指南应将重点放在以非 super 用户身份运行守护程序,而不是在USER上运行)

海事组织这是一个问题。您可以从中学习到的流行示例并不表明需要设置固定的UID。否则,如果您使用添加了另一个用户的基本镜像进行更新,则必须手动进行干预。最佳做法说,您应该考虑设置固定的UID,但是它们甚至都没有显示它的示例。因此,使用USER的prominentsimple Dockerfiles示例未设置固定的UID。官方镜像也没有设置固定的UID-像这样假装不是问题-但是然后使用chown暴力破解数据卷,因为它们的入口点脚本以root身份运行。不太令人印象深刻。

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

我想另一种选择是依赖于路径的更新。也就是说,保留chown直到每个人都完成对固定UID的自动更新(几个月?),然后将其删除。

关于docker - 为什么Docker官方镜像不按 "best practices"的要求使用USER,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36137953/

10-16 07:11