如何将现有应用程序停靠...基础知识

时间:2014-08-25 18:37:16

标签: docker boot2docker

我观看过大量的YouTube视频,并阅读了所有的docker文档。但是我仍然没有得到阻止我理解docker的核心概念。 我正在使用Windows并安装了boot2docker。我从docker hub下载了图像并运行了基本命令。但 如何将现有应用程序放在我的本地计算机上(为简单起见,我们可以说它有一个文件'index.php')。我该如何处理并将其放入泊坞窗图像并运行它?

5 个答案:

答案 0 :(得分:10)

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

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

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

图片是由图层组成的模板。每个层仅包含前一层和一些离线系统信息之间的差异。每一层都是一个图像。您应该始终使用 Dockerfile Reference docs at time of edit中的FROM指令从现有基础创建图像.Jan Vladimir Mostert的链接现在是404。 / p>

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

答案 1 :(得分:5)

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

print "hello"

您必须执行以下操作才能将此应用程序停靠:

创建一个您希望将Dockerfile存储在其中的文件夹。

创建名为" Dockerfile"

的文件

Dockerfile包含几个部分,您必须按如下所述进行定义:

与VM类似,图像具有操作系统。在这个例子中,我使用的是ubuntu 16.04。因此,Dockerfile的第一部分是:

FROM ubuntu:16.04

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

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

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

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

下一步,将存储Dockerfile的文件夹的内容复制到映像中。在我们的示例中,hello.py文件被复制到我们在上面的步骤中创建的目录。

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" ]

保存文件并通过在终端输入来构建图像:

$ docker build -t hello .

这需要一些时间。然后,检查图像"你好"我们如何在最后一行中调用它已成功构建:

$ docker images

运行图片:

docker run hello

输出喊叫"你好"在终端。

这是第一次开始。将Docker用于Web应用程序时,必须配置端口等。

答案 2 :(得分:2)

您首先需要使用dockerFile构建一个docker镜像,您可能在其上设置了apache,告诉dockerFile将您的index.php文件复制到您的apache中并公开一个端口。 / p>

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

有关docker文件的示例,请参阅我的其他问题: Switching users inside Docker image to a non-root user(这是用于将.war文件复制到tomcat中,类似于将.php文件复制到apache中)

答案 3 :(得分:0)

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

答案 4 :(得分:0)

首先,您需要选择一个平台来运行您的应用程序(例如,Ubuntu)。然后安装运行应用程序所需的所有系统工具/库。这可以通过Dockerfile实现。然后,将Dockerfile和app推送到git或Bitbucket。之后,您可以从github或Bitbucket自动构建docker hub。本教程的后半部分here有更多内容。如果您知道基础知识,请将其快速转发至50:00。