我的问题可以改为:https://data-flair.training/blogs/advantages-and-disadvantages-of-docker/ for 。
我发现了大量关于Docker和VM的信息,但是我在Docker优势中找不到一篇关于Java的文章。
Java程序正在作为JVM进程运行,这已经是一个“所谓的”虚拟机。为什么许多IT人员想要在docker中运行Java程序?
有一些工具可以帮助管理码头容器: kubernetes、docker、Docker等等。部署整个应用程序(例如,微服务体系结构)更容易,任何定制配置都非常容易:docker-compose up和docker-compose.yml定义了配置。使用这些工具进行编排和缩放也很容易。
是否可以像管理容器一样管理JVM (Java虚拟机)?有这样的工具或技术存在吗?我想到了一个硬编码的有限解决方案,就是制作bash脚本来部署所有的应用程序栈。
在容器之前,我们将在云中的虚拟机中运行我们的应用程序。但是虚拟机是昂贵的(运行应用程序需要更多的资源,还有主机操作系统和VM )。Docker技术允许在容器中运行应用程序进程,使用主机操作系统(例如,假设容器和主机操作系统具有相同的内核,它们都是基于Linux的)。
容器的另一个好处是易于开发。不必为应用程序安装不同的依赖项(数据库、缓存、应用服务器、代理服务器等),您可以从它们获取所需的映像并运行容器,而无需在开发计算机上安装这些依赖项。
但是,为什么不在主机上运行JVM进程来生产呢?例如,我们有五个容器,并且我们知道--它们将在那里运行一个Java (这很重要;否则,为每个技术堆栈使用一个单独的容器是有意义的)。因此,我们可以安装一台带有JRE的主机,并且可以在没有容器的情况下运行5个JVM进程。为什么不行?
发布于 2019-03-19 23:51:50
正如您在问题的最后一段中所说的,容器比VM便宜得多,因为它不能将硬件和整个操作系统虚拟化。
此外,在制作码头形象时,只需抓取一个容器并使其立即运行就很容易了。
发布于 2019-03-20 06:04:00
让我们想象一下,您正在主机上运行5个JVM进程。
如果:
Provisioning and deployment of containers
Redundancy and availability of containers
Scaling up or removing containers to spread application load evenly across host infrastructure
Movement of containers from one host to another if there is a shortage of resources in a host, or if a host dies
Allocation of resources between containers
External exposure of services running in a container with the outside world
Load balancing of service discovery between containers
Health monitoring of containers and hosts
Configuration of an application in relation to the containers running it不过,编排工具的架构将是复杂的。我们应该根据目的和目前的架构来决定。
https://stackoverflow.com/questions/55251575
复制相似问题