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信息

img

#docker -H tcp://127.0.0.1:1234 version 指定真确的地址信息

二、Namespace

1、Namespace介绍

#容器即实现资源隔离

(1)在Linux操作系统中,容器用来实现隔离的技术称为Namespace(命名空间)。

(2)应用进程的“视线”被操作系统做了限制,只能看到某些指定内容。

(3)实例代码:

img

#通过宿主机查看容器进程号

img

##在Linux中创建线程调用的是clone()函数

2、深入理解Namespace

#容器是Linux系统中的一种特殊进程

(1)查看当前正在运行的docker容器的进程号

img

3、Namespace的劣势

(1)隔离不彻底

(2)有些资源和对象不能被Namespace化

(3)安全问题

三、Cgroups

#对通过Linux Namespace创建的容器,Cgroups将进一步“限制”

1、查看Cgroups文件路径

img

#子系统CPU的配置文件

img

2、实例验证

(1)在子系统下创建“控制组”

img

#系统自动生成子系统的资源限制文件

(2)后台执行脚本将CPU占满

#运行死循环

img

(3)查看container目录下的文件

img

#通过修改这些文件的内容进行资源限制

img

#计算机CPU使用率立刻降到了19.5%

(4)控制组下面资源文件的值,需要用户通过docker run命令的参数指定

img

#查看资源限制文件

3、Cgroups的劣势:/proc文件系统并不了解Cgroups限制的存在

四、Docker文件系统

1、用户基于两种方法对可读可写层进行操作

(1)写时复制

(2)用时分配

2、Docker存储驱动

#查看本机Docker使用的Storage Drive

img

posted @ 2024-04-18 20:23  朝暮青丝  阅读(12)  评论(0编辑  收藏  举报