设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Docker—统一开发和部署的轻量级Linux容器

2014-6-24 10:40| 发布者: joejoe0332| 查看: 5496| 评论: 0|原作者: 几点人, jimmyjmh, Ley|来自: oschina

摘要: 使用Docker容器——轻量灵活的VM同类,来接管“依赖地狱”。学习Docker是如何基于LXC技术,通过把应用包装在容器里来使应用具有移植性和独立性。想象一下可以轻松地把应用和它的依赖打包,然后在其他的开发、测试和 ...


  接下来我们仔细看看上面的Dockerfile都做了哪些事情。Dockerfile的语法是命令关键字,其后紧跟着是该命令的参数。通常命令关键字是大写的。注释部分是以#开头的。


  FROM命令向你指明了所使用的基本映像。它必须是Docker文件的第一条命令。在这个例子里,你所做的工作都是建立在刚才新建的基本映像Centos上的。很显然,MAINTAINER命令则罗列出了维护这个Dockerfile的人员。RUN命令执行一条命令,并给出运行结果映像,因此它新创建了一个映像。这个Dockerfile里的RUN命令获取其他软件仓库的配置文件,然后使用Yum安装curl、git、wget、unzip、httpd、php-mysql和yum-utils。我们可以把这几个yum install命令合并成一条RUN命令,从而可以避免连续多次提交。


  接下来的EXPOSE命令向外部开放端口80,它就是启动容器的时候Apache要侦听的端口号。


  最后一条命令 CMD给出了容器启动时所要运行的缺省命令。启动容器就是启动一个单独的进程,这样你就可以把容器看作一条命令。 


  在命令行里输入docker build -t php_box .,这时Docker就会使用当前目录下的Dockerfile开始进行构建。运行所得到的最终映像将被命名为"php_box",这样,你以后就会很容易的识别和查找这个映像。


  这个构建过程下载了基本映像,紧接着安装Apache httpd以及与其相关的所有依赖。完成安装之后,将返回一个用来识别新创建映像的哈希值。这个值与你在前面启动MySQL容器时所使用的值类似。你可以使用php_box标签来运行Apache和PHP映像,命令如下: docker run -d -t php_box


  下面我们将以很简短例子结束这篇文章,这个例子说明在已有的映像基础上如何简单地创建新映像:


# MyApp
#
# VERSION       1.0

# use php_box base image
FROM php_box

# specify the maintainer
MAINTAINER Dirk Merkel, dmerkel@vivantech.com

# put my local web site in myApp folder to /var/www
ADD myApp /var/www

  第二个Dockerfile比第一个要简短,实际上它仅仅包含了两条真正起作用的命令。首先通过 FROM命令指定了启动的是php_box映像。然后使用 ADD命令拷贝本地一目录到这个映像。在这个例子里,拷贝到映像的Apache的DOCUMNET_ROOT文件夹的是一个PHP项目。最终得到的结果是:启动这个映像的时候默认会启动这个服务站点。


  总结


  轻量级应用及其依赖打包和部署工具Docker的出现是令人激动的事情,Linux社团很快采纳了它,而且还试着在生产环境中使用。例如,Red Hat在12月就宣布将在即将发布的Red Hat Linux企业版7里支持Docker。然而,Docker仍然是一个年轻的项目,而且正在飞速发展中。看到Docker项目发布1.0版本将是多么令人激动的时刻,1.0版本将是官方批准的用于生产环境的第一个版本。Docker依靠的现有的技术,其中一些技术已经具有十几年的历史了,但这并不意味着它没有任何创新。我希望这篇文章能给你足够多有关Docker的信息,并鼓励你下载Docker,亲自试一下。


  Docker最新进展


  在这篇文章发布的时候,Docker团队发布了版本0.8。最新的发布增加了对Mac OS X的支持,它有两个组件组成。客户端可以运行在OS X操作系统上,而Docker服务进程则运行在由boot2docker管理的轻量级VirtualBox虚拟机上,其中也包含命令行客户端。由于底层技术,比如LXC和命名空间得不到OS X的支持,所以这么做就是必然的选择。我认为大家都在期待有类似的方案能用在其他平台上,比如Windows上。


  版本0.8还引入了几个新的构建特性,并试着提供对二叉树型文件系统的支持(BTRFS)。BTRFS是另一个即写即拷贝的文件系统,另外BTRFS存储驱动用来替代AuFS驱动。


  尤其值得一提的是: Docker 0.8修补了许多程序漏洞,强化了性能。总的提交数量说明Docker团队为了生成可用于生产环境的发布版1.0所做的努力。因为Docker团队是每个月进行提交的,我们期望在4-5月份这个时间窗口发布1.0版本。


资源

Docker主站点: https://www.docker.io
Docker注册中心: https://index.docker.io
Docker注册中心相关的API: http://docs.docker.com/reference/api/registry_api/
Docker Hub API :http://docs.docker.com/reference/api/docker-io_api/

Docker远端应用API:http://docs.docker.com/reference/api/docker_remote_api/


  注解:由于翻译完成时Docker Index API已经更改为Docker Hub API,因此就采用的新的API。


酷毙

雷人
1

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部