Dokcer介绍

容器化突出优势

  1. 消除环境差异,应用运行时环境封装镜像,保证了应用生命周期的一致性和标准化,只要有Docker的环境就可以运行容器,测试运维非常高效的进行测试和部署工作
  2. 资源高效利用,容器就是系统中进程,与底层共享操作系统,性能优良,精准分配资源,彼此之间隔离互不影响
  3. 版本控制,新应用上线发现问题,快速回滚旧版本,其速度就是一个系统进程创建销毁的速度一致,远快于换原快照的方式

容器生态圈

容器生态

容器的本质

容器的本质就是宿主机上的进程,通过namespace实现了资源隔离,通过cgroups实现了资源限制,通过写时复制技术实现了高效文件操作,与宿主机共享内核

namespace资源隔离机制

Linux提供了6中namespace隔离机制:

UTS,Unix Timesharing System。通过UTS namespace的隔离,每个容器可以拥有独立的主机名和域名,在网络上可视为独立节点

IPC,Inter-Process Communication。通过IPC namespace的隔离,划分到不同IPC namespace的进程通信上隔离,如不同空间无法通过消息队列、共享内存、信号量方式通信,但没有对所有IPC通信方式隔离

PID,进程号。通过PID namespace对进程号重新标识,不同的namspace下可以有相同的PID,内核为PID namespace维护着树状结构,最顶层创建的时root namesapce,新创建的是child namespace,子节点无法查看父节点进程。一般PID namespace中启动的第一个进程作为init进程有资源监控回收能力,如果init进程销毁,namespace中所有进程都销毁,如bash

Mount namespace。用来隔离文件系统的挂载点,不同的Mount namespace拥有自己的挂载点信息,互不影响,在容器的角度可以看到不通的文件系统层次结构

Network namespace。网络资源隔离,不同的Network namesoace下可以拥有自己的网络设备,IPv4IPv6协议栈,路由表,防火墙等互不影响

User namespace。用户和组隔离,在user namespace中进程的用户和组可以和宿主机不同;宿主机的非特权用户可以映射到user namespace中成为特权用户

namespace无法隔离

namespace无法隔离的时间,容器时间与操作系统时间共享,如运行registry的节点时间不同步,其他节点拉去镜像就会出现权限认证失败。时间同步对有心跳检测的程序会引起诸多问题

简述Docker网络

Docker会在宿主机创建一个bridge0的桥设备,在每个容器中创建一个虚拟网卡连接桥设备,根据网桥的网段分配给容器IP地址,网桥作为容器的网关可以与外界通信
Docker内虚拟网段无法寻址可以通过端口映射暴露宿主机端口
Docker启动一个容器可以通过指定另一个容器的ID,达到共享同一个Network namespace的效果

cgroup资源限制

cgroup和namespace类似,也是将进程分组,cgroups为了对进程进行统一的资源监控和限制

资源限制,cgroups可以通过对任务进行资源总额的限制,如设置任务运行时使用的内存上限512M,一旦超过立即出发OOM

优先级分配,通过分配的CPU时间片数量和磁盘IO带宽,控制任务的运行优先级

资源统计,cgroups可以统计资源使用量,cpu时长,内存用量,做计量的开发计费

/sys/fs/cgroup/“cpu|memory…”/docker/容器ID ,系统这些目录下存储了每个容器对应资源限制情况,在创建容器的时候就会将限制数值写入,系统会文件内的值对进程(容器)进行资源限制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NIMdPnlF-1591612476972)(http://139.9.251.125:8888/upload/2020/06/cgroup-891b6c6d3a1d44d780d25a01aa31c443.png)]

参考

Docker源码分析-Docker架构
《Docker容器与容器云第二版》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值