问题是刻意恶作剧,答案并不那么明显。
Docker广告的附加价值之一是使其能够重现dev或prod环境。这是通过创建具有相同依赖关系,环境变量的图像来完成的......环境所需的一切都在Dockerfile中捕获,这很棒。
现在,这个Docker方法与提取依赖关系和代码以及设置环境变量的设置脚本有什么区别?
答案 0 :(得分:3)
一个显而易见的观点:隔离。
如果您运行安装脚本,您将拥有一个具有完整安装和变量的环境。但是如果你继续努力,你就有可能破坏自己的设置。您可以使用具有此安装脚本的VM(然后,您在网上有很多文章来提供Container和VM之间的差异,它们的优点等)。
另一个好理由:可复制。
您的安装脚本可以在很多环境中运行(例如:Linux Debian或Linux Ubuntu)。如果你使用一个容器,它将始终是相同的环境(最好是使用iso或iso与prod环境相同,这样你就可以轻松部署)。
其他要点:缩放。
您可以使用一个环境测试设置的缩放程度。
可能有更多的理由;)(更容易使用和分享例如;))
答案 1 :(得分:2)
Docker容器充当沙箱,这是一个主要的区别。环境变量,已安装的应用程序依赖项和其他组件完全位于Docker容器中。移除容器后,主机不会膨胀,并留下安装位。
答案 2 :(得分:1)
Docker容器是自包含的,将映像内的所有依赖项。结果与主机上的任何其他东西隔离开来。完成后,您可以移除容器和图像以释放空间,或者甚至可以重置为已知的良好状态。
设置脚本会修改主机环境以匹配目标,但是您不会从已知的干净状态开始,并使自己面临外部风险。
这意味着两个设置脚本可能会相互产生负面影响,因为它们在同一主机上运行。如果你有两个脚本,每个脚本需要不同版本的python或nodejs或tomcat,它们将破坏彼此的环境。而且你必须涵盖所有可能的外部性,而不是从已知的清洁基础开始。