服务端与客户端

服务端

docker服务端默认监听unix:///var/run/Docker.sock,只允许本地root用户或docker用户组成员访问,可使用-H修改监听方式

docker 服务器 -H 0.0.0.0:1234

Cgroups

  • Cgroups(Control Groups)是Linux下用于对一个或一组进程进行资源控制和监控的机制
  • 可以对诸如CPU使用时间、内存、磁盘I/O等进程所需资源进行限制
  • 不同资源的具体管理工作由相应的Cgroup子系统(Subsystem)来实现
  • 针对不同类型的资源限制,只要将限制策略在不同的子系统上进行关联即可
  • Cgroups在不同的系统资源管理子系统中,以层级树(Hierarchy)的方式来组织管理:每个Cgroup都可以包含其他的子Cgroup,因此子Cgroup能使用的资源除了受本Cgroup配置的资源参数限制外,还受到父Cgroup设置的资源限制

Cgroups用于对Linux中的进程做统一的监控和资源管理.

Cgroups也分为不同的子系统,不同的子系统会控制不同的资源.一个进程所需的资源大约可以分为:CPU、内存、Disk I/O.这些资源都可以被Cgroups管理起来.这些资源在Cgroups中被称为Subsystem.

进程是一个树状结构.Cgroups也采用了类似的结构,叫做Hierarchy.

  • cpu: 限制进程的 cpu 使用率。
  • cpuacct 子系统,可以统计 cgroups 中的进程的 cpu 使用报告。
  • cpuset: 为cgroups中的进程分配单独的cpu节点或者内存节点。
  • memory: 限制进程的memory使用量。
  • blkio: 限制进程的块设备io。
  • devices: 控制进程能够访问某些设备。
  • net_cls: 标记cgroups中进程的网络数据包,然后可以使用tc模块(traffic control)对数据包进行控制。
  • net_prio: 限制进程网络流量的优先级。
  • huge_tlb: 限制HugeTLB的使用。
  • freezer:挂起或者恢复cgroups中的进程。
  • ns: 控制cgroups中的进程使用不同的namespace。

示例

我们尝试限制一个docker容器的资源

[root@docker app]# docker run -it -d --cpu-period=100000 --cpu-quota=20000 centos /bin/bash
594568f1b7d85db8f1dd2596536e5baa108f61d8a095bbd9cfa14a15674e2674

--cpu-period=100000 是用来指定容器对CPU的使用要在100000微秒(μs)即100毫秒(ms) 时间内做一次重新分配

--cpu-quota=20000 是用来指定在这个周期内,最多可以有20000us(即20%的占比) 时间用来跑这个容器。

是一名喜欢每天折腾的咸鱼! 也是一名半退役的算竞摸鱼选手,参与过icpc,天梯赛,蓝桥等比赛. --------------------------------------------------- 百度 飞桨领航团-团长 Datawhale -专业助教 上海人工智能实验室 书生·浦语实战营- 助教 --------------------------------------------------- 认证类: 华为 Harmony OS应用开发者高级认证, NISP 一级认证, H3C NE-RS网络工程师认证 --------------------------------------------------- 荣获奖项荣誉: 第十八届“挑战杯”全国大学生课外学术科技作品竞赛 “揭榜挂帅”专项赛-全国特等奖、 “美亚杯”第八届中国电子取证大赛 三等奖、 “蓝桥杯”国优、 中国高校计算机大赛-团体程序天梯赛 省高校一等奖、 “蓝桥杯”省一等奖、 H3C新华三杯 省三等奖、 中国移动“梧桐杯”大数据创新大赛 省三等奖、 百度 飞桨领航团 金牌团长
最后更新于 2024-03-11