我使用的是Windows,并安装了Boot2docker。我已经从Docker Hub下载了镜像并运行了基本命令。但是,如果我想将存储在本地计算机上的现有应用程序(假定它只有一个文件index.php
)放入Docker镜像中并运行它,我该怎么办呢?
我使用的是Windows,并安装了Boot2docker。我已经从Docker Hub下载了镜像并运行了基本命令。但是,如果我想将存储在本地计算机上的现有应用程序(假定它只有一个文件index.php
)放入Docker镜像中并运行它,我该怎么办呢?
print "hello"
要将此应用程序docker化,您需要执行以下操作:
创建一个文件夹来存储您的Dockerfile。
创建名为“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
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
CMD [ "python", "hello.py" ]
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
在终端中应该输出“hello”。
这是一个起步。当您使用Docker进行Web应用程序开发时,需要配置端口等内容。
您的 index.php 实际上不是一个应用程序。应用程序是您的 Apache 或 Nginx,甚至是 PHP 自己的服务器。
由于 Docker 使用了 Windows 核心中不可用的功能,因此您正在实际虚拟机内运行它。唯一的目的是为您的实际服务器环境培训或准备镜像。
Docker 的两个主要概念是:镜像和容器。
镜像 是由层组成的模板。每个层都只包含前一层和某些离线系统信息之间的差异。每个层其实就是一个镜像。您应该使用 Dockerfile 中的 FROM 指令从现有基础构建您的镜像(参考文档)。
容器 是运行或正在运行的镜像实例。创建容器(即运行镜像)时,可以将其内部目录映射到外部。如果两个位置都有文件,则外部目录将覆盖镜像中的目录,但这些文件不会丢失。要恢复它们,您可以将容器提交为镜像(最好在停止后),然后从新镜像启动新容器,而不映射该目录。
首先,您需要选择一个平台来运行您的应用程序(例如Ubuntu)。然后安装运行应用程序所需的所有系统工具/库。这可以通过Dockerfile实现。然后,将Dockerfile和应用程序推送到git或Bitbucket。稍后,您可以从github或Bitbucket自动构建docker hub。本教程的后半部分在此处有更多相关内容。如果您已经了解基础知识,可以直接跳到50:00。