1.什么是容器
我们在生活中容器有很多,比如盘子,碗,一个桶都可以理解为一个容器
而在Linux中容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁.隔离的环境拥有自己的系统文件,ip地址,主机名等
进程:正在运行的程序,代码运行起来的时候就是一个进程
2.什么是docker
docker只是诸多容器中的一个佼佼者,或者说是docker让容器被我们熟知.
3.什么是内核
(Linux)内核是(Linux)操作系统的核心,一般包含五大部分:进程管理、存储管理、文件管理、设备管理和网络管理,是一组程序模块,具有访问硬件设备和所有主存空间的权限,是仅有的能够执行特权指令的程序。主要功能是:资源抽象、资源分配、资源共享。(资源是指CPU、内存等。)在内核基础上挂载第三方软件便构成操作系统,Ubuntu、RedHat、Fedora、Debian等都是基于Linux内核(版本号可能不同)的不同操作系统。
内核函数对用户是完全透明的,用户想要调用内核函数只有两种途径:一是 应用程序→系统调用(程序接口)→操作系统;二是 操作命令→系统程序(作业接口)→操作系统。
4.虚拟机和容器的区别
1)虚拟机是需要完全仿制一套开机流程,比如他要模拟计算机的硬件,bios自检,启动引导,加载内核等等之类的,所以虚拟机启动分钟级别很缓慢,并且启动一个虚拟机就相当于模拟了一个真实的电脑,所以内存,CPU占用都是和真机一样的,内核是独立的,资源占用大.
2)容器他不用模拟计算机的硬件,因为他和宿主机共用一个内核,而容器为了优化,也把第一个进程改为了服务进程,因为他不需要模拟硬件,自然跳过了很长的开机时间,直接用宿主机内核,启动,秒级别,轻量,损耗少,性能高
3)优缺点
虚拟机优点:
内核级隔离,每个虚拟机都有自己的一套系统,隔离性能好.
容器优点:
启动快,轻量,损耗少,性能高

5.容器的发展历史
早在1979年,就有了容器技术的雏形,changeroot技术的引进开启了进程隔离大门。2000年,FreeBSD Jails技术将计算机分为多个独立的小型计算系统。2006年,谷歌推出了Process Containers技术,在进程隔离的基础上,进行了计算资源的限制。2008年,LXC作为第一个具有完整意义的容器管理工具。2013年,LMCTFY实现了Linux应用程序容器化,成为libcontainer的重要组成部分。同年,Docker出现,容器的关注度出现爆发性的增长。Docker最初使用LXC,后来替换为libcontainer。

6.docker是用的隔离技术
1)cgroups限制一个进程能够使用的资源cpu 内存 硬盘io
2)namespaces 资源隔离

7.docker和lxc的关系
在2013年Docker刚发布的时候,它是一款基于LXC的开源容器管理引擎。把LXC复杂的容器创建与使用方式简化为Docker自己的一套命令体系。随着Docker的不断发展,它开始有了更为远大的目标,那就是反向定义容器的实现标准,将底层实现都抽象化到Libcontainer的接口。这就意味着,底层容器的实现方式变成了一种可变的方案,无论是使用namespace、cgroups技术抑或是使用systemd等其他方案,只要实现了Libcontainer定义的一组接口,Docker都可以运行。这也为Docker实现全面的跨平台带来了可能。