Docker 的前世今生

一、Docker 介绍

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

二、什么是容器

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

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

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

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

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

Docker 的前世今生

五、早期的虚拟化隔离

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

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 基础上做了革命性的改变-镜像

以上是 Docker 的前世今生 的全部内容, 来源链接: utcz.com/p/233419.html

回到顶部