6

我正在使用 Windows 并安装了 boot2docker。我已经从 docker hub 下载了图像并运行了基本命令。但是我如何将现有的应用程序放在我的本地机器上(为了简单起见,我们只说它有一个文件index.php)。我如何将其放入 docker 映像并运行它?

4

4 回答 4

12

假设您有以下现有 python2 应用程序“hello.py”,其内容如下:

print "hello"

您必须执行以下操作来 dockerize 这个应用程序:

创建一个您想要存储 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 .

这需要一些时间。然后,检查我们在上一行中如何调用它的图像“hello”是否已成功构建:

$ docker images

运行镜像:

docker run hello

终端中的输出喊叫“你好”。

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

于 2017-04-11T11:42:44.333 回答
10

您的 index.php 并不是真正的应用程序。该应用程序是您的 Apache 或 nginx 甚至是 PHP 自己的服务器。

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

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

图像是由层组成的模板每一层只包含上一层的差异和一些离线系统信息。每一层实际上都是一个图像。您应该始终使用Dockerfile中的 FROM 指令从现有基础制作图像(编辑时的参考文档。Jan Vladimir Mostert 的链接现在是 404)。

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

于 2014-08-25T21:14:36.083 回答
2

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

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

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

于 2014-08-25T20:15:30.030 回答
0

首先,您需要选择一个平台来运行您的应用程序(例如 Ubuntu)。然后安装运行应用程序所需的所有系统工具/库。这可以通过 Dockerfile 来实现。然后,将 Dockerfile 和应用程序推送到 git 或 Bitbucket。稍后,您可以从 github 或 Bitbucket 在 docker hub 中自动构建。本教程的后面部分更多关于此的内容。如果您了解基本知识,只需快进到 50:00。

于 2017-06-17T00:42:35.360 回答