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文件系统用于保存镜像并使容器变得短暂。