服务端与客户端
服务端
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%的占比) 时间用来跑这个容器。
Comments NOTHING