Docker 底层技术


一、Cgroup

Cgroup(Control Group),它用于 linux 系统资源分配、限制,前面提到的 Docker 资源分配与限制就是使用的 linux 底层技术来实现。

  • CPU:/sys/fs/cgroup/cpu/docker

  • 内存:/sys/fs/cgroup/memory/docker

  • 磁盘 IO:/sys/fs/cgroup/blkio/docker

当运行一个容器时,linux系统(宿主机)就会为这个容器创建一个 cgroup 目录,并以容器长 ID 命名,如下图:

在这里插入图片描述

该长 ID 目录下就有一个 cpu.shares 文件,其值为默认值或是你在运行容器时指定的值,如下图:

在这里插入图片描述

内存、磁盘 IO 类似。

二、Namespace

抛开宿主机后,你会发现每个容器都已自己独立的一套完整资源,如网卡设备、文件系统等,而实现这一技术的正是 namespace,namespace 管理 Host 中全局唯一资源,并可以让每个容器都觉得只有自己在使用它。其实也就是 namespace 实现了容器间资源的隔离。你也可以类比 k8s 的 namespace,在 k8s 中,namespace 可实现权限划分、资源访问等。

Linux 使用了 6 种 namespace,分别是:Mount、UTS、IPC、PID、Network 和 User。

1、Mount

该 namespace 可让容器拥有自己独立的文件系统,比如容器有自己的 / 目录,可实现相关的挂载操作(当然这些操作并不会影响我们的宿主机及其他容器)

2、UTS

该 namespace 可让容器拥有自己独立的 hostname,比如我们在运行容器时通过 -h 指定 hostname。

docker run -it -h rab ...

# 其中rab就是该容器的主机名

3、IPC

该 namespace 让容器拥有自己的共享内存和信号量,来实现进程间的通信,而不会与宿主机(Host)及其他容器混在一起。

4、PID

该 namespace 让容器拥有自己独立一套的 PID,每个容器都是以进程的形式在宿主机(Host)中运行,如图下运行了三个容器及其在 Host 中对应的 PID。

在这里插入图片描述

在这里插入图片描述

可看到,所有容器进程都挂到了 docker 容器引擎进程 /usr/bin/containerd 下。

注意:每个容器拥有自己独立一套的 PID,但容器中为 1 的 PID 并不是 Host 的 init 进程,因为容器与 Host 的 PID 是完全隔离且完整独立的。

5、Network

该 namespace 让容器拥有自己独立网卡设备、路由等资源,同样与 Host 的 Network 是完全隔离且完整独立的。

在这里插入图片描述

6、User

该 namespace 让容器拥有自己独立的用户空间,同样与 Host 的 User 是完全隔离且完整独立的。


<点击跳转至开头>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
介绍Docker核心概念,是什么、能干什么、Docker整体架构,和传统虚拟机的区别。什么是容器虚拟化技术,深刻理解镜像、容器、仓库的各种概念和操作。通过该课程,能够熟练掌握Dockerfile的编写和构建并使用Dockerfile来制作复杂镜像,能够使用容器卷完成容器间数据共享和持久化工作。能够在Docker容器下进行日常软件的安装开发和工程部署,最终可以通过docker和阿里云平台完成工作的协同和发布。 01_尚硅谷_Docker_前提知识要求和课程简介.avi 02_尚硅谷_Docker_为什么会出现.avi 03_尚硅谷_Docker_理念.avi 04_尚硅谷_Docker_是什么.avi 05_尚硅谷_Docker_能干什么.avi 06_尚硅谷_Docker_三要素.avi 07_尚硅谷_Docker_CentOS6安装Docker.avi 08_尚硅谷_Docker_CentOS7安装Docker简介(补充知识请看34集).avi 09_尚硅谷_Docker_阿里云镜像加速器配置.avi 10_尚硅谷_Docker_helloworld镜像.avi 11_尚硅谷_Docker_运行底层原理.avi 12_尚硅谷_Docker_帮助命令.avi 13_尚硅谷_Docker_镜像命令.avi 14_尚硅谷_Docker_容器命令(上).avi 15_尚硅谷_Docker_容器命令(下).avi 16_尚硅谷_Docker_镜像原理.avi 17_尚硅谷_Docker_镜像commit.avi3 18_尚硅谷_Docker_容器数据卷介绍.avi 19_尚硅谷_Docker_容器数据卷用V命令添加.avi 20_尚硅谷_Docker_容器数据卷用DockerFile添加.avi 21_尚硅谷_Docker_容器数据卷volumes-from.avi 22_尚硅谷_Docker_Dockerfile是什么.avi 23_尚硅谷_Docker_DockerFile构建过程解析.avi( 24_尚硅谷_Docker_DockerFile保留字指令.avi 25_尚硅谷_Docker_DockerFile案例-自定义镜像mycentos.avi 26_尚硅谷_Docker_DockerFile案例-CMD-ENTRYPOINT命令案例.avi 27_尚硅谷_Docker_DockerFile案例-ONBUILD命令案例.avi 28_尚硅谷_Docker_DockerFile案例-自定义的tomcat9.avi 29_尚硅谷_Docker_DockerFile案例-自定义的tomcat9上发布演示.avi 30_尚硅谷_Docker_DockerFile小总结.avi 31_尚硅谷_Docker_安装mysql.avi, 32_尚硅谷_Docker_安装Redis.avi 33_尚硅谷_Docker_本地镜像推送到阿里云.avi 34_尚硅谷_Docker_CentOS7安装Docker(补充知识).avi

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值