Docker初识和namespace、control groups技术

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的​​镜像​​中,然后发布到任何流行的​​Linux​​​​Windows​​操作系统的机器上,也可以实现​​虚拟化​​。容器是完全使用​​沙箱​​机制,相linux操作系统基础知识互之间不会有任何接口

docker三大理念

  1. 构建镜像(重要)、分发镜像、运行镜像
  2. namespace、cgroup提供容器隔离安全保障
  3. 实现轻量级虚拟机,专业叫法应用容器

docker组成

docker客户端是管理单个服务器,k8s是管docker常用命令理多个服linux常用命令务器

虚拟机和Docker架构对比

同配置情况虚拟机和Docker效率比至少1:2~3,前者假设10台,后者可能带20~30台


                                            Docker初识和namespace、control groups技术

容器互相隔离技术(namespace

保护宿主机内核、容器之间文件、网络、进程等互相隔离

linux内核版本对容器提供至关重要,因此建议内核至少3.1版本dockers以上,linux操作系统基础知识查询命令uname -r


                                            Docker初识和namespace、control groups技术

PID namespece

PID为1的进程(init/systemd)是其他linux命令所有进程的父进程,宿主机和虚拟机dockerhub同样有一个父进程管理属下的子进程


                                            Docker初识和namespace、control groups技术

Net namespece

容器会像虚拟机一样拥有自己的虚linux必学的60个命令网卡


                                            Docker初识和namespace、control groups技术

容器资源限制技术(control groups)

防止容器无序扩展对docker安装部署资源需求,如CnamespacePU、内存、磁盘、网络linux重启命令等。一般情况下我们会对CPU、内存(重点)加以管理,因为CPU无法是上下dockers文切换,而内存一旦被越权, 除非重启或者特殊办法,内存无法释放

使用容器技术和云上系统目前U父进程bantu各方面占优dockers,因此以此部署较为父进程合适

cgroup主要功能

资源限制(ResourceLimitation)
cgroups可以对进程组使用的资源总额进行限制。如设定应用运行时使用内存的上限,一旦超过这个配额就发出OOM(OutofMemory)。

优先级分配(Prioritization)
通过分配的CPU时间片数量及硬盘IO带宽大小,实际上就相当于控制了进程运行的优先级。

资源统计(Accounting)
cgroups可以统计系统的资源使用量,如CPU使用时长、内存用量等等,这个功能非常适用于计费。

进程控制(Control)
cgroups可以对进程组执行挂起、恢复等操作。

cgroup子系统
cgroup的子系统主要包括blkio、cpu、cpuacct、cpuset、devices、freezer、memory、perfevent等系统,基本经常使用的就是blkio、cpu、memory、cpuset。简单介绍一下这些常用的子系统的各个字段

cgroup子系统详解


                                            Docker初识和namespace、control groups技术

验证内核支持cgroup情况

cat /boot/config-4.15.0-156-generic | grep CGROUP


                                            Docker初识和namespace、control groups技术


                                            Docker初识和namespace、control groups技术