root@docker-lab:~# docker run -it --cpu-shares 512 progrium/stress -c 1 # 启动容器,设置cpu.shares 512
stress: info: [1] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [1] using backoff sleep of 3000us
stress: dbug: [1] --> hogcpu worker 1 [7] forked
root@docker-lab:~# docker ps # 查看容器ID
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
980b3b38e444 progrium/stress "/usr/bin/stress --v…" About a minute ago Up About a minute vigilant_mahavira
root@docker-lab:~# ls /sys/fs/cgroup/cpu/docker/ # 在cgroup目录中查找容器对应的目录,容器长ID命名
980b3b38e44419fca0df8681101274a16a75a2bf426f7cfb6354a73953a42cfe cgroup.procs cpuacct.usage cpu.cfs_period_us cpu.shares notify_on_release
cgroup.clone_children cpuacct.stat cpuacct.usage_percpu cpu.cfs_quota_us cpu.stat tasks
root@docker-lab:~# cat /sys/fs/cgroup/cpu/docker/980b3b38e44419fca0df8681101274a16a75a2bf426f7cfb6354a73953a42cfe/cpu.shares # 查看cgroup中设置的 cpu.shares 值
512
root@docker-lab:~#
root@docker-lab:~# ll /sys/fs/cgroup/ # 查看cgroup 中的所有内容
total 0
drwxr-xr-x 13 root root 340 Jun 14 2018 ./
drwxr-xr-x 9 root root 0 Jun 14 2018 ../
dr-xr-xr-x 6 root root 0 Jun 14 2018 blkio/
lrwxrwxrwx 1 root root 11 Jun 14 2018 cpu -> cpu,cpuacct/
lrwxrwxrwx 1 root root 11 Jun 14 2018 cpuacct -> cpu,cpuacct/
dr-xr-xr-x 6 root root 0 Jun 14 2018 cpu,cpuacct/
dr-xr-xr-x 3 root root 0 Jun 14 2018 cpuset/
dr-xr-xr-x 6 root root 0 Jun 14 2018 devices/
dr-xr-xr-x 3 root root 0 Jun 14 2018 freezer/
dr-xr-xr-x 3 root root 0 Jun 14 2018 hugetlb/
dr-xr-xr-x 6 root root 0 Jun 14 2018 memory/
lrwxrwxrwx 1 root root 16 Jun 14 2018 net_cls -> net_cls,net_prio/
dr-xr-xr-x 3 root root 0 Jun 14 2018 net_cls,net_prio/
lrwxrwxrwx 1 root root 16 Jun 14 2018 net_prio -> net_cls,net_prio/
dr-xr-xr-x 3 root root 0 Jun 14 2018 perf_event/
dr-xr-xr-x 6 root root 0 Jun 14 2018 pids/
dr-xr-xr-x 6 root root 0 Jun 14 2018 systemd/
root@docker-lab:~# ll /sys/fs/cgroup/cpu/docker/980b3b38e44419fca0df8681101274a16a75a2bf426f7cfb6354a73953a42cfe/ # 查看容器 cgroup cpu 相关内容
total 0
drwxr-xr-x 2 root root 0 Jan 29 09:28 ./
drwxr-xr-x 3 root root 0 Jan 29 09:20 ../
-rw-r--r-- 1 root root 0 Jan 29 09:26 cgroup.clone_children
-rw-r--r-- 1 root root 0 Jan 29 09:20 cgroup.procs
-r--r--r-- 1 root root 0 Jan 29 09:22 cpuacct.stat
-rw-r--r-- 1 root root 0 Jan 29 09:22 cpuacct.usage
-r--r--r-- 1 root root 0 Jan 29 09:22 cpuacct.usage_percpu
-rw-r--r-- 1 root root 0 Jan 29 09:22 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 Jan 29 09:22 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 Jan 29 09:20 cpu.shares
-r--r--r-- 1 root root 0 Jan 29 09:22 cpu.stat
-rw-r--r-- 1 root root 0 Jan 29 09:26 notify_on_release
-rw-r--r-- 1 root root 0 Jan 29 09:26 tasks
root@docker-lab:~# ll /sys/fs/cgroup/memory/docker/980b3b38e44419fca0df8681101274a16a75a2bf426f7cfb6354a73953a42cfe/ # 查看容器 cgroup memory 相关内容
total 0
drwxr-xr-x 2 root root 0 Jan 29 09:28 ./
drwxr-xr-x 3 root root 0 Jan 29 09:20 ../
-rw-r--r-- 1 root root 0 Jan 29 09:27 cgroup.clone_children
--w--w--w- 1 root root 0 Jan 29 09:20 cgroup.event_control
-rw-r--r-- 1 root root 0 Jan 29 09:20 cgroup.procs
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.failcnt
--w------- 1 root root 0 Jan 29 09:27 memory.force_empty
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.kmem.failcnt
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.kmem.limit_in_bytes
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.kmem.max_usage_in_bytes
-r--r--r-- 1 root root 0 Jan 29 09:27 memory.kmem.slabinfo
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.kmem.tcp.failcnt
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.kmem.tcp.limit_in_bytes
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.kmem.tcp.max_usage_in_bytes
-r--r--r-- 1 root root 0 Jan 29 09:27 memory.kmem.tcp.usage_in_bytes
-r--r--r-- 1 root root 0 Jan 29 09:27 memory.kmem.usage_in_bytes
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.limit_in_bytes
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.max_usage_in_bytes
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.memsw.failcnt
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.memsw.limit_in_bytes
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.memsw.max_usage_in_bytes
-r--r--r-- 1 root root 0 Jan 29 09:27 memory.memsw.usage_in_bytes
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.move_charge_at_immigrate
-r--r--r-- 1 root root 0 Jan 29 09:27 memory.numa_stat
-rw-r--r-- 1 root root 0 Jan 29 09:20 memory.oom_control
---------- 1 root root 0 Jan 29 09:27 memory.pressure_level
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.soft_limit_in_bytes
-r--r--r-- 1 root root 0 Jan 29 09:27 memory.stat
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.swappiness
-r--r--r-- 1 root root 0 Jan 29 09:27 memory.usage_in_bytes
-rw-r--r-- 1 root root 0 Jan 29 09:27 memory.use_hierarchy
-rw-r--r-- 1 root root 0 Jan 29 09:27 notify_on_release
-rw-r--r-- 1 root root 0 Jan 29 09:27 tasks
root@docker-lab:~# ll /sys/fs/cgroup/devices/docker/980b3b38e44419fca0df8681101274a16a75a2bf426f7cfb6354a73953a42cfe/ # 查看容器 cgroup devices 相关内容
total 0
drwxr-xr-x 2 root root 0 Jan 29 09:29 ./
drwxr-xr-x 3 root root 0 Jun 14 2018 ../
-rw-r--r-- 1 root root 0 Jan 29 09:29 cgroup.clone_children
-rw-r--r-- 1 root root 0 Jan 29 09:20 cgroup.procs
--w------- 1 root root 0 Jan 29 09:20 devices.allow
--w------- 1 root root 0 Jan 29 09:20 devices.deny
-r--r--r-- 1 root root 0 Jan 29 09:29 devices.list
-rw-r--r-- 1 root root 0 Jan 29 09:29 notify_on_release
-rw-r--r-- 1 root root 0 Jan 29 09:29 tasks
root@docker-lab:~# ll /sys/fs/cgroup/blkio/docker/980b3b38e44419fca0df8681101274a16a75a2bf426f7cfb6354a73953a42cfe/ # 查看容器 cgroup blkio 相关内容
total 0
drwxr-xr-x 2 root root 0 Jan 29 09:29 ./
drwxr-xr-x 3 root root 0 Jan 29 09:20 ../
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_merged
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_merged_recursive
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_queued
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_queued_recursive
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_service_bytes
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_service_bytes_recursive
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_serviced
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_serviced_recursive
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_service_time
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_service_time_recursive
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_wait_time
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.io_wait_time_recursive
-rw-r--r-- 1 root root 0 Jan 29 09:29 blkio.leaf_weight
-rw-r--r-- 1 root root 0 Jan 29 09:29 blkio.leaf_weight_device
--w------- 1 root root 0 Jan 29 09:29 blkio.reset_stats
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.sectors
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.sectors_recursive
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.throttle.io_service_bytes
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.throttle.io_serviced
-rw-r--r-- 1 root root 0 Jan 29 09:29 blkio.throttle.read_bps_device
-rw-r--r-- 1 root root 0 Jan 29 09:29 blkio.throttle.read_iops_device
-rw-r--r-- 1 root root 0 Jan 29 09:29 blkio.throttle.write_bps_device
-rw-r--r-- 1 root root 0 Jan 29 09:29 blkio.throttle.write_iops_device
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.time
-r--r--r-- 1 root root 0 Jan 29 09:29 blkio.time_recursive
-rw-r--r-- 1 root root 0 Jan 29 09:29 blkio.weight
-rw-r--r-- 1 root root 0 Jan 29 09:29 blkio.weight_device
-rw-r--r-- 1 root root 0 Jan 29 09:29 cgroup.clone_children
-rw-r--r-- 1 root root 0 Jan 29 09:20 cgroup.procs
-rw-r--r-- 1 root root 0 Jan 29 09:29 notify_on_release
-rw-r--r-- 1 root root 0 Jan 29 09:29 tasks
在每个容器中,我们都可以看到文件系统、网卡等资源,这些资源看上去是容器自己的。拿网卡来说,每个容器都会认为自己有一块独立的网卡,及时docker host上只有一个块物理网卡。这种方式非常好,他使得容器更像一个独立的计算机。
Linux实现这种方式的技术是namespace,namespace管理着docker host中全局唯一的资源,并可以让每个容器都觉得只有自己在使用他。换句话说,namespace实现了容器间的资源隔离。
简单的说,UTS namespace让容器有自己的hostname 。默认情况下,容器的hostname 是他的短ID,可以通过 -h 或者 --hostname 参数设定