Docker学习【3】容器底层技术
容器底层技术
一、Docker 基本架构(C/S架构)
1、服务端(Docker daemon):
(1)Docker daemon通过专门的Engine模块来分发、管理来自客户端的任务。
(2)使用systemd管理启动服务的系统中默认启动配置文件在/etc/systemd/system/Docker.service.d/Docker.conf
2、客户端:用户通过客户端提供的一些列命令一服务端进行交互
(1)查看Docker信息
#docker -H tcp://127.0.0.1:1234 version 指定真确的地址信息
二、Namespace
1、Namespace介绍
#容器即实现资源隔离
(1)在Linux操作系统中,容器用来实现隔离的技术称为Namespace(命名空间)。
(2)应用进程的“视线”被操作系统做了限制,只能看到某些指定内容。
(3)实例代码:
#通过宿主机查看容器进程号
##在Linux中创建线程调用的是clone()函数
2、深入理解Namespace
#容器是Linux系统中的一种特殊进程
(1)查看当前正在运行的docker容器的进程号
3、Namespace的劣势
(1)隔离不彻底
(2)有些资源和对象不能被Namespace化
(3)安全问题
三、Cgroups
#对通过Linux Namespace创建的容器,Cgroups将进一步“限制”
1、查看Cgroups文件路径
#子系统CPU的配置文件
2、实例验证
(1)在子系统下创建“控制组”
#系统自动生成子系统的资源限制文件
(2)后台执行脚本将CPU占满
#运行死循环
(3)查看container目录下的文件
#通过修改这些文件的内容进行资源限制
#计算机CPU使用率立刻降到了19.5%
(4)控制组下面资源文件的值,需要用户通过docker run命令的参数指定
#查看资源限制文件
3、Cgroups的劣势:/proc文件系统并不了解Cgroups限制的存在
四、Docker文件系统
1、用户基于两种方法对可读可写层进行操作
(1)写时复制
(2)用时分配
2、Docker存储驱动
#查看本机Docker使用的Storage Drive