如何dockerize现有的应用程序…的基本知识

我已经观看了大量YouTubevideo,并阅读了所有的docker文档。 然而,我仍然没有得到一个阻止我理解docker工人的核心概念。 我正在使用Windows并安装了boot2docker。 我从docker集线器下载了图像并运行基本命令。 但是,我怎样才能把一个现有的应用程序坐在我的本地机器上(为了简单起见,只是说它有一个'index.php'文件)。 我该如何把它放进docker图像并运行它?

你的index.php实际上不是一个应用程序。 该应用程序是您的Apache或Nginx甚至PHP自己的服务器。

由于Docker使用Windows核心中不可用的function,因此您正在实际的虚拟机中运行它。 唯一的目的是为您的真实服务器环境进行培训或准备映像。

Docker需要理解两个主要概念:图像和容器。

图像是由图层组成的模板。 每层只包含前一层和一些脱机系统信息的区别。 每一层都是一个图像。 您应该始终使用Dockerfile中的FROM指令来创build您的映像( 编辑时的参考文档, Jan Vladimir Mostert的链接现在是404)。

容器是已经运行或正在运行的映像的实例。 创build容器(又名运行图像)时,可以将内部目录从外部映射到外部。 如果两个位置都有文件,则外部目录覆盖图像内的文件,但这些文件不会丢失。 要恢复它们,您可以一个容器提交到一个图像(最好在停止之后),然后从新图像启动一个新容器,而不映射该目录。

你需要首先build立一个Docker镜像,使用dockerFile,你可能会设置apache,告诉dockerFile将你的index.php文件拷贝到你的apache中,并暴露一个端口。

请参阅http://docs.docker.com/reference/builder/

请参阅我的其他问题的Docker文件的示例: 切换Docker镜像中的用户到非root用户 (这是为了将.war文件复制到tomcat,类似于将.php文件复制到Apache)

想象一下,你有以下现有的python2应用程序“hello.py”与以下内容:

print "hello" 

你必须做以下的事情来dockerize这个应用程序:

创build一个你想存储你的Dockerfile的文件夹。

创build一个名为“Dockerfile”的文件

Dockerfile由几个部分组成,你必须按照下面的描述来定义:

像虚拟机一样,映像有一个操作系统。 在这个例子中,我使用的是Ubuntu 16.04。 因此,Dockerfile的第一部分是:

 FROM ubuntu:16.04 

想象一下,你有一个新的Ubuntu – 虚拟机,现在你必须安装一些东西来让你的应用程序工作,对吧? 这是由Dockerfile的下一部分完成的:

 RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y python 

对于Docker,您必须现在在图像中创build一个工作目录。 稍后要执行的命令将启动您的应用程序将search此目录中的文件(如我们的例子中的python文件)。 因此,Dockerfile的下一部分创build一个目录并将其定义为工作目录:

 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app 

下一步,将Dockerfile所在文件夹的内容复制到图像中。 在我们的例子中,hello.py文件被复制到我们在上面的步骤中创build的目录。

 COPY . /usr/src/app 

最后,下面一行在你的图像中执行命令“python hello.py”:

 CMD [ "python", "hello.py" ] 

完整的Dockerfile看起来像这样:

 FROM ubuntu:16.04 RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y python RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY . /usr/src/app CMD [ "python", "hello.py" ] 

保存文件并在terminal中input以build立图像:

 $ docker build -t hello . 

这将需要一些时间。 之后,检查图像“hello”是如何在最后一行中调用它的:

 $ docker images 

运行图像:

 docker run hello 

在terminal输出留言是“hello”。

这是第一个开始。 当您使用Docker for Web应用程序时,您必须configuration端口等

如果是基于Java或python的多层应用程序,则可以使用像goPaddle( http://gopaddle.io )这样的解决scheme将现有的应用程序转换为docker蓝图。

首先,您需要select一个运行您的应用程序的平台(例如Ubuntu)。 然后安装运行应用程序所需的所有系统工具/库。 这可以通过Dockerfile来实现。 然后,把Dockerfile和app推到git或者Bitbucket。 稍后,您可以通过github或Bitbucket在Docker中心自动构build。 本教程的后面部分有更多的内容。 如果你知道的基本知识只是快点到50:00。