Docker化Web应用程序

时间:2017-12-06 05:07:30

标签: docker dockerfile devops docker-machine

我是这个容器化的新手,我想知道Docker如何取代虚拟机?

我给出了一个案例研究,其中有2个虚拟机,每个虚拟机充当虚拟服务器,一个是开发服务器,另一个是测试服务器,我被要求研究Docker如何有效地帮助管理工作流程

在这种情况下,2台虚拟机是服务器,而Docker取代虚拟机的想法令我感到困惑。

任何人都可以帮助我理解这个概念。

先谢谢!!

2 个答案:

答案 0 :(得分:1)

我不确定如何将服务器完全替换为docker容器,因此我假设您要将在2台服务器上运行的2个应用程序替换为运行2个容器的每个测试和开发应用程序的1个服务器。

在我回答之前,我会做一些假设。

  • 首先我要假设,您的应用程序是一个简单的Web服务,已部署在服务器中的tomcat / IBM websphere上。
  • 其次,我假设数据库位于测试服务器和开发服务器的不同服务器上。

Docker Basics

  1. Dockerfile - 使用命令docker build,您可以创建一个图像
  2. Docker Image - 这是从dockerfile
  3. 创建的
  4. Docker容器 - 当您执行映像的docker运行时,会创建一个容器。正在运行的图像实例是您的容器
  5. Docker Registry - 您可以从中下载基本映像的位置 所以在这里,

  6. 在unix服务器上设置docker。

  7. 现在您需要创建2个容器来托管相同的应用程序。为此,首先需要编写dockerfile,创建一个图像,然后使用该图像启动容器。
  8. 示例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构建时,它将创建一个基本层为ibm liberty的图像。 FROM之后的每个命令都允许您添加其他图层,以便您可以根据自己的具体情况进行自定义。

    对两个应用完成上述操作后,您的应用实际上有两种版本在同一台服务器上运行,但服务于两种不同的环境。

    最重要的是,将它添加到Bamboo / jenkins的CI / CD管道中,您可以快速启动和调低环境。

答案 1 :(得分:0)

  • 每个docker容器本身都充当虚拟机,意味着每个容器 具有自己的操作系统的容器将进程与主机隔离开来。

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

    如果最终docker死了,你可以从图像重新启动 安装操作系统,应用程序与虚拟机不同。

    您可以将docker镜像传输到其他服务器 导入/导出您的应用程序,只需要其他 服务器已运行docker服务。

  • 如果有2个依赖服务作为容器运行我们可以 链接那些容器进行内部通信。就像wordpress一样 容器和mysql作为其他两者都应该有联系的,它 那个案例的docker链接将有助于互连。

    你可以管理docker容器的cpu,内存,磁盘 任何虚拟机管理程序中的虚拟机。

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