Docker化Web应用程序

我对这种集装箱化是新的,我想知道Docker如何取代虚拟机?

我给出了一个案例研究,其中有两个虚拟机,每个虚拟机充当虚拟服务器,一个是开发服务器,另一个是testing服务器,我被要求研究Docker如何帮助高效地pipe理工作stream。

在这种情况下,2个虚拟机是服务器,Dockerreplace虚拟机的想法让我感到困惑。

谁能帮我理解这个概念。

提前致谢!!

我不知道如何一个服务器可以被一个docker容器完全取代,所以我假设你想要将2个服务器中运行的2个应用程序replace为运行2个容器的每个testing和开发应用程序的1台服务器。

我会做出一些假设,然后才能回答。

  • 首先,我将假设,您的应用程序是一个简单的Web服务,已经部署在服务器上的Tomcat / IBM Websphere上。
  • 其次,我假设数据库在testing和开发服务器的不同服务器上。

Docker基础

  1. Dockerfile – 使用命令docker build,你可以创build一个图像
  2. Docker Image – 这是从dockerfile创build的
  3. Docker容器 – 当你做一个图像的docker运行,一个容器被创build。 正在运行的图像实例是您的容器
  4. Docker Registry – 从那里你可以下载基地的图像所以,在这里,

  5. 在unix服务器上安装docker。

  6. 现在您需要创build两个容器,它们将托pipe相同的应用程序。 为此,您首先需要编写一个dockerfile,创build一个图像,然后使用该图像启动容器。

示例dockerfile看起来像下面的东西

FROM webspher-liberty17:webProfile7 ENV SERVER_NAME=myapptestserver RUN ["/bin/bash", "-c", "/opt/ibm/wlp/bin/server create $SERVER_NAME"] EXPOSE 9080 9443 COPY server.xml jvm.options /opt/ibm/wlp/usr/servers/$SERVER_NAME/ COPY *.war /opt/ibm/wlp/usr/servers/$SERVER_NAME/dropins/ CMD ["/opt/ibm/docker/docker-server", "run", "myapptestserver"] 

现在,当您执行此docker文件的docker构build时,它将创build一个基本图层为ibm liberty的图像。 FROM之后的每个命令都允许您添加一个附加图层,因此您可以根据自己的具体情况进行自定义。

一旦你完成了上述两个应用程序,实际上有两个变种的应用程序运行在同一台服务器上,但服务于两个不同的环境。

最好的部分,把这个添加到你的CI / CDpipe道中的竹/jenkins,你可以带来一个快速的上下环境。

  • 每个docker集装箱本身就是一个虚拟机,意味着每个容器都有自己的操作系统隔离主机的进程。

    因此,如果启动2个容器,则意味着您将运行2个ubuntu(对于ex)服务器。在每个容器中,您可以运行软件并将该服务公开给外部世界。

    如果最终docker工人死了,你可以重新启动镜像,而不需要安装操作系统,应用程序不像虚拟机。

    您可以将泊坞窗图像传输到其他服务器,就像您的应用程序的导入/导出一样,只要求其他服务器上的泊坞窗服务正在运行。

  • 如果有两个依赖的服务作为容器运行,我们可以将这些容器连接起来进行内部通信。如同一个容器和mysql一样,这两个容器都应该被认可,那么docker链接将有助于互连。

    您可以像任何pipe理程序中的虚拟机一样pipe理Docker容器的CPU,内存和磁盘。

    详细信息: https : //docs.docker.com/engine/docker-overview/#docker-engine