当前位置: 首页 > 知识库问答 >
问题:

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

夏意蕴
2023-03-14

Postgres、mariadb、mysql不使用user。应该是官方图像被审查,以遵守最佳实践文档,这要求用户在可能的情况下。为什么?

共有1个答案

巫欣荣
2023-03-14

从根本上说,用户在官方图像中是不可能的。它与“初始用户应该能够Docker运行官方-image bash而不需要了解--entrypoint”的要求相冲突。如果你没有root,你就不能编辑配置文件,安装像Strace这样的软件包。或者特别地,修复卷中的UID。实际上,官方形象风格被认为是最佳做法。(因此,Docker userguide应该把重点放在以非root身份运行守护进程上,而不是专门针对用户)

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

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

 类似资料:
  • 因为OpenJ9可以节省30%的内存使用,所以我在我的项目中使用了OpenJ9。现在,docker的官方形象在未来没有得到维护。今天,我尝试将我的项目从AdoptJDK docker image迁移到eclipse temurin,但我没有找到任何关于OpenJ9的docker映像。我在网上搜索,有人告诉我许可证问题,将来有可能使用OpenJ9吗?为什么eclipse temurin官方不支持Op

  • 本文档旨在实验Docker1.13新特性和帮助大家了解docker集群的管理和使用。 环境配置 Docker1.13环境配置 docker源码编译 网络管理 网络配置和管理是容器使用中的的一个重点和难点,对比我们之前使用的docker版本是1.11.1,docker1.13中网络模式跟之前的变动比较大,我们会花大力气讲解。 如何创建docker network Rancher网络探讨和扁平网络实现

  • 本文衍生自官方的 Best practices for writing Dockerfiles , 在此之上增加了个人见解。 除此之外,官方还提供了几个标准的 Dockerfile 作为示例: buildpack-deps Go Rails 容器应该短命 docker 中的容器(container)应该是用过即弃的,每次使用时都应该重新从镜像(image)中构建。 使用 .dockerignore

  • 问题内容: 我刚刚试用了Docker。它很棒,但似乎不能与ufw配合使用。默认情况下,docker将对iptables进行一些操作。结果不是错误,而是我的预期。有关更多详细信息,请阅读UFW + Docker的危险 我的目标是建立一个像 我想通过ufw管理传入流量(例如,限制访问),因此我不希望docker触摸我的iptables。这是我的测试 环境: 新安装的Ubuntu 14.04(内核:3.

  • 问题内容: 我开发Joomla网站/组件/模块和插件,并且每隔一段时间我都需要使用JavaScript来加载页面时触发事件的功能。在大多数情况下,这是使用函数完成的。 我的问题是: 这是在页面加载时触发JavaScript事件的最佳方法,还是有更好/更新的方法? 如果这是触发页面加载事件的唯一方法,那么确保多个事件可以由不同的脚本运行的最佳方法是什么? 问题答案: 可以,但是您可能已经注意到, 它

  • 问题内容: 我将开始使用AngularJS进行客户端和Django进行服务器端项目。 使他们像最好的朋友一样工作的最佳实践是什么(静态文件,身份验证,部署等) 问题答案: 有多种方法可以从Django模板中为客户端模板提供支持,以实现有趣的优化。但是,鉴于Django和AngularJS的模板语言之间的相似之处,在这里几乎不值得付出任何努力。对于此类大多数项目,我会将AngularJS的静态服务与