首页 > 其他分享 >Namespace & Cgroup

Namespace & Cgroup

时间:2023-02-25 21:33:49浏览次数:54  
标签:容器 Namespace 空间 Cgroup 命名 Docker

Docker Namespace Vs Cgroup

最近想学习一下Docker底层是用什么技术来实现容器之间互不影响这一强大功能的,偶尔发现了这篇文章,里面对Docker底层的实现技术做了比较宏观的解释、比较适合入门了解。
附上原文链接Docker Namespace Vs Cgroup
img

Namespace and Cgroup

  • 它们所运行的Linux容器是由两个底层的Linux内核技术驱动的:cgroups和namespaces。
  • 当你启动一个容器时,在幕后,Docker为该容器创建了一组命名空间和控制组。

What is Namespace?

  • 命名空间为容器提供了一个隔离层。
  • 容器的每个方面都在一个单独的命名空间中运行,其访问仅限于该命名空间。
  • 当你运行一个容器时,Docker为该容器创建一组命名空间。
  • 命名空间使在该命名空间内运行的进程相信他们有自己的该资源的实例。
  • 命名空间可以限制对某些进程树、网络接口、用户ID或文件系统挂载的可见性。

Docker Engine uses the following namespaces on Linux

  • PID(进程ID)它用于为进程分配一组PID,这些PID独立于其他命名空间的PID集。
  • NetWork(网络) 命名空间用于管理网络接口,如私有路由表、IP地址集、套接字列表、防火墙等。
  • IPC(进程间通信) 命名空间有自己的IPC资源,例如,POSIX消息队列。
  • Mount 挂载命名空间有一个独立的挂载点列表,用于管理文件系统挂载点。
  • UNIX时间共享(UTS)名称空间允许一个系统在不同的进程中看起来有不同的主机和域名。

What is Cgroup?

  • 控制组(cgroup)是一个Linux内核功能,它将一个应用程序限制在一组特定的资源使用上(CPU、内存、磁盘I/O、网络,等等)。
  • 控制组允许Docker Engine将可用的硬件资源分享给容器,并可以选择执行限制和约束。

Cgroups involve resource metering and limiting:

  • memory
  • CPU
  • block I/O
  • network

总结:

Docker使用了Namespace和Cgroup技术来确保不同的空间内(Namespace)可以使用不同的资源(cpu、memory...)想要深入了解的小伙伴可以按照这个思路再进一步深入了解!

标签:容器,Namespace,空间,Cgroup,命名,Docker
From: https://www.cnblogs.com/Asakalan/p/17155455.html

相关文章

  • K8S-namespace 六大类型
    一、namespace六大类型•Mount(mnt):隔离文件系统挂载点,该namespace有自己的挂载信息,即拥有独立的目录层次总结:提供磁盘挂载点和文件系统的隔离能力•UTS:隔离主机名......
  • Spring Tool Suite 3(sts)手动添加namespace
    设置位置:window-->preferences-->spring-->namespaces 选中对应的namespace内容加入到xml文件中; ......
  • k8s的命名空间Namespace
      你可以认为namespaces是你kubernetes集群中的虚拟化集群。在一个Kubernetes集群中可以拥有多个命名空间,它们在逻辑上彼此隔离。他们可以为您和您的团队提供组织,安......
  • Docker cgroups 资源控制
    一、CPU资源控制cgroups,是一个非常强大的1inux内核工具,他不仅可以限制被namespace隔离起来的资源,还可以为资源设置权、计算使用量、操控进程启停等等。所以cgroups(Contro......
  • k8s namespace kubeDNS
       图中kube-dns只是一个service,但是他对外提供k8s集群内部的dns服务,真正的dnsserver,是coredns这几个podk8snamespace的作用只是提供逻辑上的组件隔离例如pod......
  • k8s namespace 一直处于 Terminating 状态的解决方法
    目录json格式导出namespace信息修改json文件开启proxy服务调用接口删除namespace以下的tool为Terminating状态的namespace,下面相关的一些操作记得将tool......
  • k8s最佳实践:cgroup kmem的内存泄露问题
    k8s最佳实践:cgroupkmem的内存泄露问题1.前言这篇文章的全称应该叫:[在某些内核版本上,cgroup的kmemaccount特性有内存泄露问题],如果你遇到过pod的"cannotallocated......
  • c++ namespace
    名字空间:名字空间有两个特征:1.顺序2.嵌套顺序:编译器和解释器相当于一个翻译官,拿着本子一行一行读代码,只有见过的名字才会记到本子上,每见过的名字他就不认识(所以C++需......
  • 【踩坑记录】docker启动报错mountpoint for cgroup not found
    具体报错信息:docker:Errorresponsefromdaemon:OCIruntimecreatefailed:container_linux.go:345:startingcontainerprocesscaused"process_linux.go:281:ap......
  • 使用cgroup限制CPU核数
    在性能测试的时候,有的时候需要限制CPU为指定核数,我们很容易想到docker,其实还可以通过cgroup来实现。关于cgroupcgroups全称controlgroups,是Linux内核提供的物理资源隔......