首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于容器化的Docker查询

关于容器化的Docker查询
EN

Stack Overflow用户
提问于 2018-09-05 21:26:09
回答 2查看 91关注 0票数 1

我们的需求是通过docker为遗留应用程序创建一个容器。

我们没有可用的操作系统支持/应用服务器支持,也没有从头开始构建它们的知识。

但是我们有一个遗留应用程序的物理实例在我们的场中运行。

如果需要,我们可以从我们的服务器团队获得ISO映像,我们的问题是,如果我们获得此ISO映像,我们是否可以将其导出为docker映像?

如果是,请让我知道是否有任何与之相关的具体程序或步骤。

如果没有,请告诉我为什么?以及可能的变通方法。

EN

回答 2

Stack Overflow用户

发布于 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系统上所有用户安装的软件包的列表:

代码语言:javascript
复制
sudo dnf history userinstalled

当应用程序使用诸如composer或pip之类的依赖项管理器时,通常会有一个文件列出所有特定于语言的依赖项。

在该过程结束时,您将拥有一个可移植的遗留应用程序,该应用程序可以以最小的占用空间轻松部署到任何地方。

正如其中一条评论正确地指出的那样,从ISO映像创建VM是另一种更容易实现的方法。应用程序的依赖关系不是很明确,但对于您的用例来说,这可能是可以的。

票数 1
EN

Stack Overflow用户

发布于 2018-09-05 22:28:44

如果我们得到这个ISO镜像,我们可以将其导出为docker镜像吗?

我不认为有一种简单的方法(像按下导出按钮)来做到这一点。解释如下...

您正在描述一个发生在虚拟机世界中的过程。您可以拍摄服务器的快照,将.iso文件移动到其他位置,然后创建一个将在Hypervisor上运行的新VM。

容器不是VM。它们“包含”服务运行所需的所有字节,但不包含整个操作系统。它们应该在主机上作为进程运行。

解决方法:

你得把手弄脏。这意味着您必须找出遗留应用程序使用的是什么(例如Apache + PHP + MySql +应用程序代码),并使用Docker从头开始构建它。

一些想法:

  • 容器应该是轻量级的。例如,一个容器可能用于数据库,另一个容器用于Apache等。你的案例看起来就像是一个胖容器,里面有关于遗留技术的所有东西inside.
  • Depending,你可能会碰壁……例如,如果我们正在讨论一些可以在旧的php,mysql上使用的东西,你可能会在hub.docker.com上找到现成的图片。但是,如果遗留应用程序是用cobol编写的金融系统,我不知道您的起点是什么--
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52186312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档