docker概念

  一.docker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的cgroup,namespace,Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机与其他进程,这种运行是封装的状态称为容器. Docker早起版本实现是基于LXC,并进一步对其封装,包括

文件系统、网络互联、镜像管理等方面,极大简化了容器管理.从0.7版本以后开始去,除LXC,转为自行研发的libcontainer,从1.11版本开始,进一步演进为使用runC和containerd. Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。使用沙箱机制运行程序,程序之间相互隔离。

  docker的体系结构:

二.内部组件:

1.Namespaces,命名空间,Linux内核提供的一种对进程资源隔离的机制,例如进程、网络、挂载点等资源。 

2.CGroups 控制组,Linux内核提供的一种限制进程资源的机制;例如CPU、内存等资源.

3.UnionFS  联合文件系统,支持将不同位置的目录挂载到同一虚拟文件系统,形成一种分层的模型。

三  虚拟机与容器的区别

1. 启动时间:Docker秒级启动,KVM分钟级启动.

2.轻量级:容器镜像大小通常以M为单位,虚拟机以G为单位. 容器资源占用小,要比虚拟机部署更快

3.性能: 容器共享宿主机内核,系统级虚拟化,占用资源少,没有Hypervisor层开销,容器性能基本接近物理机;虚拟机需要Hypervisor层支持,虚拟化一些设备,具有完整的GuestOS,虚拟化开销大,因而降低性能,没有容器性能好.

4.安全性:由于共享宿主机内核,只是进程级隔离,因此隔离性和稳定性不如虚拟机,容器具有一定权限访问宿主机内核,存在一定安全隐患.

5.使用要求:KVM基于硬件的完全虚拟化,需要硬件CPU虚拟化技术支持;容器共享宿主机内核,可运行在主流的Linux发行版,不用考虑CPU是否支持虚拟化技术.

四.部署应用优点

1.节省项目环境部署时间

2.环境一致性

3.持续集成

4.微服务

5.弹性伸缩

五 容器网络访问原理

 六.数据持久化到宿主机

原文地址:https://www.cnblogs.com/zhangcaiwang1/p/9533599.html