我们的需求是通过docker为遗留应用程序创建一个容器。
我们没有可用的操作系统支持/应用服务器支持,也没有从头开始构建它们的知识。
但是我们有一个遗留应用程序的物理实例在我们的场中运行。
如果需要,我们可以从我们的服务器团队获得ISO映像,我们的问题是,如果我们获得此ISO映像,我们是否可以将其导出为docker映像?
如果是,请让我知道是否有任何与之相关的具体程序或步骤。
如果没有,请告诉我为什么?以及可能的变通方法。
发布于 2018-09-05 21:50:16
您将需要对您访问的工件的应用程序依赖项进行反向工程。这意味着恢复特定于语言的依赖项(无论是python、java、php、node等)。以及所需的任何操作系统级包/依赖项。
从本质上讲,您正在使用操作系统包安装工具(如apt )、语言级工具(如pip、PECL、PEAR、composer或maven )在docker文件中重新构建ISO镜像的内容,最后是组成应用程序代码的文件。
因此,举个例子: PHP应用程序可能依赖于在操作系统中安装build-essential和php-mysql。然后,应用程序可能依赖于通过composer加载的包,如twig和monolog。如果你使用的是SASS,你可能也需要安装ruby。
您的工作是跟踪所有这些,并创建一个重新生成iso镜像的docker文件。如果你使用的是通用的堆栈,比如tomcat中的J2EE应用,或者apache或ngnix提供的php应用,那么基本的docker镜像将会带你到达你想要去的地方。
看起来确实有一些工具可以自动为您完成此操作:Dependency Walker equivalent for Linux?。我不能保证他们中的任何一个。但您也可以使用命令行工具。例如,这将为您提供fedora系统上所有用户安装的软件包的列表:
sudo dnf history userinstalled当应用程序使用诸如composer或pip之类的依赖项管理器时,通常会有一个文件列出所有特定于语言的依赖项。
在该过程结束时,您将拥有一个可移植的遗留应用程序,该应用程序可以以最小的占用空间轻松部署到任何地方。
正如其中一条评论正确地指出的那样,从ISO映像创建VM是另一种更容易实现的方法。应用程序的依赖关系不是很明确,但对于您的用例来说,这可能是可以的。
发布于 2018-09-05 22:28:44
如果我们得到这个ISO镜像,我们可以将其导出为docker镜像吗?
我不认为有一种简单的方法(像按下导出按钮)来做到这一点。解释如下...
您正在描述一个发生在虚拟机世界中的过程。您可以拍摄服务器的快照,将.iso文件移动到其他位置,然后创建一个将在Hypervisor上运行的新VM。
容器不是VM。它们“包含”服务运行所需的所有字节,但不包含整个操作系统。它们应该在主机上作为进程运行。
解决方法:
你得把手弄脏。这意味着您必须找出遗留应用程序使用的是什么(例如Apache + PHP + MySql +应用程序代码),并使用Docker从头开始构建它。
一些想法:
https://stackoverflow.com/questions/52186312
复制相似问题