您的位置:首页 > 运维架构 > Docker

Docker

2015-05-29 09:46 525 查看
1、之前在逛CSDN时看到过Docker很多次,主要是被它呆萌的logo吸引。



2、今天看到一篇文章讲Docker,讲的很通俗易懂,所以将自己的一点对Docker的认识记录下来;

3、简单的将Docker是一种虚拟化技术,但是它是基于Linux容器技术的,那什么是Linux容器技术呢?

4、参考来源:http://www.cnblogs.com/wang_yb/p/3923040.html

Linux 容器 (LXC - linux container)

LXC 是非常轻量级的, 它将 VM 的进程也伪装成 HOST 的进程. 大致的结构如下

p1(HOST), p2(VM), p3(VM), p4(HOST)......
Linux Kernel
硬件
那么, 对于某些系统进程, PID是固定的, 比如 init进程的PID=1, VM中的 init进程的PID是如何处理的呢?

原来, VM的 init进程的PID在 HOST的进程表中会显示成其它PID(>1).
从上面可以看出, LXC这种虚拟化, VM的进程就像HOST的进程一样运行, 管理, 所以创建和销毁都是非常快速的.

容器技术是工作于进程,是内核进行了资源隔离,他的性能接近原生

面向交付:docker基于进程. 他发布出去后用户面对的也是进程入口. 这样的交付方式革命性的变化. 举个例子. 我要安装jira.
传统的方法是安装服务器, 安装tomcat, 下载jira. 配置jira,启动jira. 而在docker中. 所有过程就是一个docker run xxx/jira一行命令即可搞定. 其他软件也是如此. 它是面向交付的.比如复杂的ELK, 也只是几个命令就可以搭建起来. 很多细节都被封装起来了

5、引用一个Docker前辈的经典的话:“Docker 是一个好东西。但对于对运维领域接触较少的人,没用过 docker 是正常的。因为 docker
运行的程序都没有 GUI 界面,而且 docker
只能运行基于 Linux 的程序(感谢思寒补充,docker 也可以运行 .net 程序,详细请看 Running
ASP.NET 5 applications in Linux Containers with Docker)。;在这个操作系统界面还要比颜值的时代,没有图形化界面的虚拟化技术普罗大众怎么会感兴趣呢?”

但是,Docker也试有GUI的,不过颜值高不高,我没有发言权,因为我还没有试过!!!

6、通过比较来了解Docker与其他虚拟化软件的不同:

参考来源:http://testerhome.com/topics/2549?from=groupmessage&isappinstalled=0

下面我们看看在 windows 下用 docker 和用虚拟机搭建一个基于 Ubuntu 的 LAMP 服务器有什么不同:

虚拟机:

安装虚拟机软件,如 Virtualbox

建立一个虚拟机,在里面安装 Ubuntu 系统

安装 apache

安装配置 MySql

安装配置 PHP

Docker:

安装虚拟机软件 boot2docker

安装 docker

使用
docker
run -d -p 80:80 -p 3306:3306 tutum/lamp
下载并启动 LAMP

使用 Docker ,你节省了:

数百兆甚至 1G 的空间

虚拟机的安装镜像(某些时候获取这些镜像所花的时间很可观)

一个完整的 Ubuntu 系统

所以,docker 相比虚拟机,最大的优势在于快速部署和使用,同时由于 docker 不是完整的虚拟机,它的开启和关闭速度要比虚拟机快的多(一般 10s 内)。

7、Docker如何完成它需要完成的任务?

Docker使用了cgroup和union文件系统

两个词:cgroups和union文件系统。Docker使用cgroup来提供容器隔离,而union文件系统用于保存镜像并使容器变得短暂。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: