Docker底层使用了哪些Linux技术?

本文带你了解Docker底层使用了哪些Linux技术

1、Docker底层特性:
  • chroot:改变根目录,可指定任何一个目录作为根目录
  • namespaces:进程通信隔离、文件系统/硬盘挂载点隔离/网络隔离/进程ID隔离,用户/用户组隔离
  • cgroup:限制、隔离、分离一个进程组资源(如CPU、内存、磁盘I/O等)
  • overlayFS:联合挂载技术
  • iptables:防火墙规则
2、详细介绍:
overlayFS
结构:
  • lowerdir:只读层
  • upperdir:读写层
  • mergedir:展示层
目录:
  • lower
  • upper
  • work

宿主机可以创建这三个目录赋予权限,最终通过三个目录实现资源结构的划分、在合并展示给用户挂载在宿主机上,最终结果是在展示层显示

cgroup

当Docker创建一个容器时,它会为该容器在其父进程(通常是dockerd或containerd)所在的cgroups子系统下创建一个新的cgroups层级结构。对于不同的资源类型,Docker会在相应的cgroups子系统中设置适当的限制:

  • 内存限制:可以通过设置内存上限(比如 -m 或 --memory 标志)限制容器可使用的总内存,还可以限制Swap空间的使用,避免容器因内存不足而影响整个系统的稳定性。
  • CPU限制:可以限制容器可使用的CPU份额(比如 -c 或 --cpus 标志)以及CPU周期数,也可以通过CPU亲和性设定容器只能在特定CPU核心上运行。
  • 磁盘I/O限制:通过blkio子系统,可以限制容器对磁盘I/O的带宽和IOPS。
  • 网络带宽限制:利用 Traffic Control (tc) 工具结合cgroups,可以对容器的网络带宽进行限制。
namespaces

包括但不限于以下几种类型的Namespace:

  • pid namespace:隔离进程ID空间,容器内的进程具有独立的进程号。
  • network namespace:每个容器拥有独立的网络栈,可以拥有自己的网络设备、IP地址、路由表等。
  • mount namespace:每个容器拥有独立的挂载点视图,实现文件系统的隔离。
  • UTS namespace:隔离主机名和域名。
  • IPC namespace:隔离进程间通信资源,如System V IPC和POSIX消息队列。
  • user namespace:隔离用户和组ID,增强安全性。

Linux本身涵盖IPC/MNT/NET/PID/USER/UTS
ll /proc/$$/ns

chroot
拷贝程序所依赖的库文件:
ldd /bin/bash以此来实现

Docker能够实现容器与主机之间的文件系统隔离,使得容器内部的进程只能访问和操作容器内部的文件和目录,而不能直接访问主机的文件系统。这种隔离性不仅能够增加安全性,还可以保证容器与主机之间的文件系统互不干扰。 改变根目录技术

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值