docker introduce - yaokun123/php-wiki GitHub Wiki

Docker的前世今生

一、Docker介绍

容器技术被认为是未来部署软件的主流趋势之一,高性能,轻量级及跨平台是容器技术的主要特征,传统的应用部署过程大概是:下载软件->编译安装->启动软件,比如现在要安装 LNMP 软件,就得先下载Nginx+Mysql+PHP,然后一个个安装,这对于一两台服务器时还能接受,要是面对成千上万的服务器集群,还不得累死吗?有没有办法把这几个软件打包成一个软件一次性安装呢,容器的出现使得很好的解决了这类问题。

二、什么是容器

容器以一种特定的格式来打包软件,这种格式可以各自独立的运行在同一个操作系统之上,不像虚拟机,容器不会捆绑一个完整的操作系统,而仅仅打包软件运行所需要的依赖库和设置。这样可以实现一个高效、轻量级、自给自足的系统,并且可以保证软件总是以相同的方式运行,而不管它被部署在哪里。

从上可知,容器是一种打包应用的方式,可以帮你打包应用中的所有软件和软件所依赖的环境,并且可以实现跨平台部署。相比虚拟机,容器更高效和轻量化,一台服务器运行1000个虚拟机基本是难以想象的,但IBM的服务器据称已经在一台服务器上运行万级的容器。

三、Docker是什么? docker是容器领导者。

Docker是世界领先的软件容器平台,在进行多人协作开发时,开发者可以使用Docker来消除所谓“我这里运行是好的”(works on my machine)问题,运维人员使用Docker来并行的运行和管理应用来获得更优计算密度,基于各自独立的容器。企业使用Docker来建立敏捷的交付方式,实现更快的、更安全的和更自信的交付新功能而不管是Linux或Windos服务器。

四、主机虚拟化和容器的区别

五、早期的虚拟化隔离

通过比较复杂的代码开发过程,调用以下三项技术,实现容器的创建和销毁。

chroot

完整的根文件系统(FHS)标准

Namespace命名空间

1、PID(Process ID):进程隔离
2、NET(Network):管理网络接口
3、IPC(InterProcess Communication):管理跨进程通信的访问
4、MNT(Mount):管理挂载点
5、UTS(Unix Timesharing System):隔离内核和版本标识(主机名域名)
6、User:用户空间隔离

Cgroups

1、资源限制管理
2、优先级设定
3、资源计量
4、资源控制

blkio:块设备io
cpu:cpu
cpuacct:cpu资源使用报告
cpuset:多处理器平台上的cpu集合
devices:设备访问
freezzer:挂起或恢复任务
memory:内存用量及报告
pref event:对cgroup中的任务进行同一性能测试
net cls:cgroup中的任务创建的数据报文的类别标识符

六、LXC(LinuXContainer) & Docker

LXC

对于原有的常用功能进行了封装,方便我们做容器的生命周期

Docker

在lxc基础上做了革命性的改变-镜像