docker基本元素和底层实现
docker是轻量级的操作系统虚拟化解决方案
优点
1、基于操作系统层面
2、启动速度快(秒级)
3、资源利用率高
4、性能高、易管理
docker有3大基本要素
分别是
1、镜像:只读模板,用来创建docker容器。
2、容器:镜像创建的运行实例,启动时创建一层可写曾作为最上层。
3、仓库:集中存放镜像文件场所,分私有仓库和公有仓库。
docker的底层实现有
1、名字空间:每个容器都有自己单独的名字空间,运行在其中的应用都像是在独立的操作系统中运行一样。名字空间保证了容器之间彼此互不影响。
pid名字空间: 不同的用户进程就是通过pid名字空间隔离的,且不同名字空间可以有相同pid
net名字空间: 网络隔离是通过net名字空间实现的。每个net名字空间有独立的网络设备,IP地址,路由表,/proc/net目录
ipc名字空间: 进程间交互方法(IPC) 信息量、消息队列、共享内存
mnt名字空间: 将一个进程放到一个特定的目录执行
ufs名字空间: 独立的hostname、domainame
user名字空间: 用容器内部的用户执行程序而非主机的用户
2、控制组:对共享资源进行隔离、限制、审计等
3、联合文件系统(AUFS):支持对文件系统的修改作为一次提交来一层层叠加、同时可以将不同目录挂载到同一虚拟文件系统下。镜像可以通过分层进行继承,基于基础镜像,可以制作各种具体应用镜像,不同容器可以共享一些基础的文件系统层。
4、网络实现:docker启动时会在主机建立一个docker0的虚拟网桥,同时分配一个随机的本地为占用的私有网段给docker0,如172.16.0.0。启动容器时,创建veth pair接口,一端在容器内及eth0,一端被挂载到docker0,名称以veth开头。每次创建新容器时,从可用地址段选一个空闲IP分配给容器eth0端口。使用docker0接口IP做所有容器的默认网关。