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

use*_*895 5 docker boot2docker

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

col*_*ict 10

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

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

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

一个图像是一个层组成的模板.每个层仅包含前一层和一些离线系统信息之间的差异.每一层都是一个图像.你应该始终从现有基础,使图像,使用从指令Dockerfile(参考文档编辑时的时间.现在一月弗拉基米尔Mostert的链接是404).

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

  • 我……对这个答案犹豫不决。当然,*file* index.php 本身并不是一个应用程序,但是可以从 index.php 启动的整个东西确实可以是一个应用程序。我的意思是,基于浏览器的 CRM 是成熟的应用程序,就像它们的桌面应用程序一样。 (2认同)

Jan*_*gen 6

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

print "hello"
Run Code Online (Sandbox Code Playgroud)

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

创建一个您想要存储Dockerfile的文件夹.

创建一个名为"Dockerfile"的文件

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

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

FROM ubuntu:16.04
Run Code Online (Sandbox Code Playgroud)

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

RUN     apt-get update && \ 
        apt-get upgrade -y && \
        apt-get install -y python
Run Code Online (Sandbox Code Playgroud)

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

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
Run Code Online (Sandbox Code Playgroud)

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

COPY . /usr/src/app
Run Code Online (Sandbox Code Playgroud)

最后,以下行在您的映像中执行命令"python hello.py":

CMD [ "python", "hello.py" ]
Run Code Online (Sandbox Code Playgroud)

完整的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" ]
Run Code Online (Sandbox Code Playgroud)

通过在终端中键入来保存文件并构建映像:

$ docker build -t hello .
Run Code Online (Sandbox Code Playgroud)

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

$ docker images
Run Code Online (Sandbox Code Playgroud)

运行图像:

docker run hello
Run Code Online (Sandbox Code Playgroud)

输出呼叫在终端中是"你好".

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