Docker,我有一个包含应用程序服务器的文件夹。 什么可以用作容器?

我想问一下,如果我有一个文件夹包含应用程序服务器(Axis2,Tomcat,WSO2,mongodb和jms-consumer)什么可以用作容器?

Docker是一个应用程序安装程序吗? 对整个应用程序进行分类,然后将其用作安装程序文件,例如: server.exe用于windows, server.deb用于Ubuntu

可以帮忙解释一下吗?

Docker作为应用程序安装程序?

不,docker是一个在build筑,运输和运行( 集装箱即服务 )周围pipe理容器(与主机内核运行隔离的用户/进程/磁盘机器)的平台。

最好的做法是在自己的容器中隔离全球服务的每个部分,这既是因为PID1僵尸收获问题 (详见“ 使用Docker中的Supervisor ”),也是为了便于pipe理和更新。
如果每个组件只代表一个Tomcat,一个MongoDB,…,每个组件更容易pipe理/debugging,而不是有一个巨大的容器。
你也可以停止/更新一个没有必要与所有其他的。

类似安装的部分是对你的环境的描述(包括操作系统和你想添加到容器中的应用程序)和Dockerfile :描述你的环境需要运行的东西。
这有助于构build一个映像(您需要的所有文件的归档),从这个映像docker run一个容器。

现在,这些容器只能作为Linux内核主机上的Linux机器运行(或者通过Linux VM运行在Windows上)。
您还没有在Windows上运行的纯Windows映像/容器(正在运行,Windows Server 2016)。


那么你可以把你在一个巨大的文件夹中的东西放在docker集装箱里吗?

不直接。 Dockerfile的目标是描述你将如何安装你需要的东西。
然后你docker build ,从你得到的形象, docker run

但是,为了让docker正确pipe理该容器的生命周期,最好将容器限制在一个进程中(而不是trynig在同一个容器空间中运行类似于webapp服务器,mongodb等的所有东西)

这意味着:

  • 在单独的Dockerfile中为每个系统组件描述(构build单独的映像)
  • 以一种彼此看到的方式运行这些容器并相互通信。

在我的项目中有一个复杂的多组件系统的例子: b2d