加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

如何利用Linux容器实现可移植的应用部署

发布时间:2016-01-20 05:07:55 所属栏目:Linux 来源:网络整理
导读:Docker是一种在Linux容器里运行应用的开源工具,一种轻量级的虚拟机。除了运行应用,Docker还提供了 一些工具,借助Docker Index或自己托管的Docker注册表对进

Docker可以安装在任何支持AUFS和内核版本大于等于3.8的Linux系统上。但从概念上来说它并不依赖于这 些技术,以后也可以和类似的技术一起运行,例如Solaris的Zones或BSD jails,并将ZFS作为文件系统。不过 目前只能选择Linux 3.8+和AUFS。

那Docker为什么有意思呢?

Docker非常轻量。启动VM是个大动作,需要占用大量内存;而启动Docker容器只耗费很少的CPU和内存,并 且非常快。几乎和启动一个常规进程没什么区别。不仅运行容器快,构建镜像、捕获文件系统的快照也很快。

它运行在已经虚拟化过的环境中。也就是说,你可以在EC2实例、Rackspace VM或VirtualBox里运行Docker 。事实上,在Mac和Windows上使用Docker的首选方式是使用Vagrant。

Docker容器能移植到任何运行Docker的操作系统上。无论是Ubuntu还是CentOS,只要Docker运行着,你的 容器就能运行。

让我们回到前面的部署、操作问题列表,看看Docker是怎么解决的:

隔离性:Docker在文件系统和网络级别隔离了应用。从这个意义上来讲很像在运行”真正的“ 虚拟机。

重复性:用你喜欢的方式准备系统(登录并在所有软件里执行apt-get命令,或者使用Dockerfile),然后 把修改提交到镜像中。你可以随意实例化若干个实例,或者把镜像传输到另一台机器,完全重现同样的设置。

安全性:Docker容器比普通的进程隔离更为安全。Docker团队已经确定了一些安全问题,正在着手解决。

资源约束:Docker现在能限制CPU的使用率和内存用量。目前还不能直接限制磁盘的使用情况。

易于安装:Docker有一个Docker Index,这个仓库存储了现成的Docker镜像,你用一条命令就可以完成实 例化。比如说,要使用Clojure REPL镜像,只要运行docker run -t -i zefhemel/clojure-repl命令就能自动 获取并运行该镜像。

易于移除:不需要应用了?销毁容器就行。

升级、降级:和EC2 VM一样:先启动应用的新版本,然后把负载均衡器切换到新的端口。

快照、备份:Docker能提交镜像并给镜像打标签,和EC2上的快照不同,Docker是立即处理的。

怎么使用Docker

假设你已经安装了Docker。要在Ubuntu容器中运行bash,只要执行:

docker run -t -i ubuntu /bin/bash

根据“ubuntu”镜像的下载情况,Docker会选择下载或者使用本地可用的拷贝,然后在Ubuntu 容器里运行/bin/bash。接着你就能在容器里执行几乎所有典型的Ubuntu操作,比如安装新的包。

我们来安装个“hello”:

$ docker run -t -i ubuntu /bin/bash
root@78b96377e546:/# apt-get install hello
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
  hello
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 26.1 kB of archives.
After this operation, 102 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ precise/main hello amd64 2.7-2 [26.1 kB]
Fetched 26.1 kB in 0s (390 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package hello.
(Reading database ... 7545 files and directories currently installed.)
Unpacking hello (from .../archives/hello_2.7-2_amd64.deb) ...
Setting up hello (2.7-2) ...
root@78b96377e546:/# hello
Hello, world!

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!