很抱歉,如果这个问题只是一个普遍的问题,那么有关更新配方的任何建议将不胜感激!
因此,我有一个使用命令行工具进行计算的Java应用程序。这些电话非常罕见。例如,有可能在24小时内没有呼叫。问题是,Docker对此进行容器化的方式是什么?
有几种可能的解决方案:
问题是-我错过了什么吗?还有其他可能的解决方案吗?所有列出的解决方案都可行吗?有没有办法使用Swarm或Kubernetes之类的工具使其变得更干净?
答案 0 :(得分:0)
根据我的经验,Docker Way是您的第三个选择,将操作包装在HTTP Facade中并使其始终运行。
Docker很好地支持了HTTP路径(例如,您可以使用其他容器的--name
作为主机名),并且可以在其他环境中轻松进行测试或模拟。这也意味着,如果您确实需要更新这些支持工具之一,则可以重新启动另一个容器。您不必关闭主应用程序即可对其进行更新。
对于主要交互方式是命令行参数,stdin或stdout的进程,Docker并不是特别有效。特别是对于一个容器启动另一个容器而言,该容器需要对主机的不受限制的根访问权限,并且您需要使用Docker API,而不仅仅是“启动子进程”。
如果外部程序是完全独立的,则可以在Dockerfile中复制它们并将其作为普通子进程进行调用。您提到Java;如果您要将整个JVM添加到原本非Java的映像中,而只是偶尔启动,则会增加膨胀和复杂性。