容器vs脂肪罐

问题描述 投票:-2回答:1

我在网上找不到容器和胖子罐之间的任何比较,但是我非常想知道何时使用哪种以及什么有优缺点。我可以弄清楚其中的胖子罐在哪里使用了更多的空间,因为它们具有从依赖项到类的所有内容,但是容器也是如此,所以它可能不仅仅是空间,我可以想到所有术语吗?

java docker deployment containers fatjar
1个回答
0
投票

如果您使用这些术语考虑,您可以将Docker映像像一个胖.jar文件加上一个捆绑在一起的JVM,以及一个作为运行嵌入式JVM的包装的容器。

您并不是特别需要Docker,尤其是要运行具有相当流行的运行时的应用程序。通常,您需要管理员级别的权限才能运行容器。相反,由于容器文件系统与主机文件系统是分开的,因此在应用程序开发阶段大量使用它可能不方便。

如果您处在全Java的世界中,则可以获得与使用应用程序服务器从Docker可能获得的很多相同的好处。这样一来,应用程序就可以共享虚拟机,以一致的方式发布其网络接口并访问数据库,并且通常不需要太多特定于主机的设置即可工作。

Docker在部署时以及在混合语言环境中更有意义。如果您的Java REST API与某些Python机器学习代码对话,那么将它们打包在Docker中可让您一致地部署和运行它们;如果您需要运行一个组件(或两者)的多个副本,并且需要或想要在多个服务器上运行以实现冗余或扩展,则可以使用Kubernetes之类的群集解决方案。

由于Docker容器确实具有隔离的文件系统,因此您可以在映像中安装数十个依赖项.jar文件,然后将其视为一个统一的单元。如果您的工具支持这一点,那么这可能比构建胖.jar更好的方法。 (我在Scala上有一些负面的经验,其中构建胖.jar本身非常缓慢,解决资源文件中的冲突是棘手和手动的,并且Docker映像比重建时需要的大;尤其是在Scala中[C0 ]可以自动从库sbt-native-packager中构建Docker映像。)

© www.soinside.com 2019 - 2024. All rights reserved.