Docker 的环境标准化



我在一个问题上挣扎的问题似乎没有人在互联网上详细回答

"在整个管道中标准化服务基础架构允许每个团队成员在生产平价环境中工作"

这是Docker的关键好处:它允许每个人开发,测试或类似生产的环境中的任何内容。因为通过管道的容器始终相同。我明白了。我知道这是必要的,并且Docker可以轻松允许这一点。但是我不明白的是,为什么在docker之前很难?如果我有生产机器和测试机,我将不会有任何问题构建一个安装正确依赖关系的脚本,无论机器是什么。因此,我的环境在库或框架方面是相同的。

我从整个环境相关的好处中理解的唯一一件事是,Docker允许开发人员选择他的操作系统,而不必担心与平台相关的错误。我已经遇到了在Windows而不是Mac上使用的功能。我认为最糟糕的虫子。是的,如果当时我有Docker,我就不会遇到这个问题。但是我不明白为什么Docker是其他与环境有关的东西的奇迹。

我认为我不理解这一点,因为我只从事小型项目。也许我也没有意识到"环境"一词的全部含义。

我在这里想念什么?为什么容器是标准化环境的突破,而脚本可以实现?

以下列表并不详尽,它仅表示Docker的三个重要优势。请注意,Docker不是一个神奇的解决方案,并且可能不会在特定情况下进行调整。


首先,使用容器您在依赖关系之间没有冲突

如果您使用两个在不同版本的库中使用两个程序,则必须在执行程序之前手动安装两个版本并指定自定义环境变量。(例如LD_LIBRARY_PATH(。请注意,存在一些工具来解决此问题,但仅在特定情况下(例如,python中的Virtualenvs(。

其次,使用容器您没有持久性

例如,如果您编写了一个小的bash脚本来基于Nginx和PHP安装开发环境,并且由于误会而安装Apache,即使您再次运行脚本,我的软件包仍将存在。事情是Apache有时会在NGINX之前开始并阻止80端口,打破您的开发环境。

总结一下,没有Docker,您不确定未跟踪元素的状态,它们可能会破坏您的环境。

第三,Docker允许您减少开发与生产之间的差距

近距离环境是"您的代码运行所需的一切"。例如库,配置文件,您的解释器(Python,php,...(。Docker用其近距离环境包装应用程序,因此您的应用程序和提供的环境之间没有不匹配。

当您在开发过程中更新依赖关系并且可能忘记在生产中更新它们时,这一点尤其重要。


错误的论点是安全性和隔离。安全过程始于定义威胁模型,然后选择对策。添加Docker是因为它在危险环境中提高安全性是不够的(没有内核空间隔离(,并且如果您不需要更多的话,则将Docker添加为安全性,称为Paranoïa。Docker添加了用户空间隔离和默认的seccomp配置文件,但这不是使用它的理由,除非它匹配您的威胁模型。

相关内容

  • 没有找到相关文章

最新更新