Docker是一个开源应用容器引擎,可轻松创建轻量级、可移植容器,有了它,人们可以很容易封装和交付程序,在云计算领域有着广泛的应用。Docker自从诞生以来就备受追捧,得到了行业许多大企业的支持,包括亚马逊, Canonical 公司, CenturyLink, 谷歌, IBM, 微软等,许多初创公司也在围绕着 Docker 发展,或者改变他们的发展方向来与 Docker 更好地结合起来。

本文主要介绍如何在自己的项目中使用Dockerfile来构建镜像,镜像可以直接拿来部署云端应用,也可以做为一个基础镜像,我们可以在它之上进行二次开发。

首先,我们在项目的主目录创建Dockerfile文件,里面填入如下内容,接下来整体的解释各指令。

FROM ubuntu:14.04

#install software
RUN apt-get update
RUN apt-get install -yq g++ \
                        git \
                        make \
                        libssl-dev \
                        libcurl4-openssl-dev

#get remote source
RUN ["/bin/bash", "-c", "cd ~ && /usr/bin/git clone https://github.com/yangtze736/your_project"]

#set env variables
RUN echo 'export LD_LIBRARY_PATH=$PATH:/usr/local/middleware/lib' >> ~/.bashrc

#build middleware
RUN ["/bin/bash", "-c", "cd ~/your_project && make && make install" ]
FROM ubuntu:14.04

用来申明我们的镜像是基于什么构建的,这里指定为ubuntu14.04

RUN apt-get update
RUN apt-get install -yq g++ \
                        git \
                        make \
                        libssl-dev \
                        libcurl4-openssl-dev 

RUN命令用来在容器内部的shell里执行,以上用来安装软件和依赖库

RUN ["/bin/bash", "-c", "cd ~ && /usr/bin/git clone https://github.com/yangtze736/your_project"]
RUN echo 'export LD_LIBRARY_PATH=$PATH:/usr/local/your_project/lib' >> ~/.bashrc
RUN ["/bin/bash", "-c", "cd ~/your_project && make && make install"]

以上指令实现了克隆你在github上的项目(也可以是自己内部搭建的git服务器上的工程),设置环境变量和工程构建的功能。


那么,构建一个这样的镜像有何用处?我们要在其上做二次开发,只需在Dockerfile第一行加入:

FROM your_image

如同乐高积木一样,用户只需选择合适的组合,并且在最顶端署上自己的名字(最后个标准化组件是用户的app)。这也就是基于docker的PaaS(平台即服务)产品的原型。

大家有兴趣的话,可以去daocloud上注册用户玩一玩,Enjoy~