[install]
yum -y install docker
vi /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn"
]
}
systemctl restart docker
[install iproute]
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install iproute -y
ip addr
[ctn create network]
docker network create --driver bridge --subnet 173.18.0.0/16 --gateway 173.18.0.1 servicebridge01
[1. 容器资源限额]
# ①运行一个压力测试容器,实践容器内存分配限额。
docker run -it -m 200M hub.c.163.com/combk8s/jess/stress --vm 1 --vm-bytes 150M
docker run -it -m 200M hub.c.163.com/combk8s/jess/stress --vm 1 --vm-bytes 250M
# ②运行一个压力测试容器,实践容器内存和swap分配限额。
docker run -it -m 300M --memory-swap=400M hub.c.163.com/combk8s/jess/stress --vm 2 --vm-bytes 100M
# ③运行一个压力测试容器,实践容器CPU使用限额。
docker run -it --cpus=0.6 hub.c.163.com/combk8s/jess/stress --vm 1
# ④在容器运行终端Ctrl+c后,然后运行压力测试容器,实践容器CPU权重限额。依次运行三个压力测试容器,让宿主机CPU使用出现竞争。
docker run -itd --cpu-shares 2048 hub.c.163.com/combk8s/jess/stress --cpu 1
docker run -itd --cpu-shares 1024 hub.c.163.com/combk8s/jess/stress --cpu 1
docker run -itd --cpu-shares 512 hub.c.163.com/combk8s/jess/stress --cpu 1
# ⑤运行一个测试容器,实践容器IO限额。
docker run -it --device-write-bps /dev/vda:50MB hub.c.163.com/library/centos
time dd if=/dev/zero of=test.out bs=1M count=200 oflag=direct
[2. CGroup]
# ①运行压力测试容器,验证内存限额cgroup配置。
docker run -itd -m 300M --memory-swap=400M hub.c.163.com/combk8s/jess/stress --vm 2 --vm-bytes 100M
docker container ls
cd /sys/fs/cgroup/memory/docker/容器长ID/
按照容器ID,查询cgroup内存子系统验证其内存限额配置。
(cgroup内存子系统所在路径为/sys/fs/cgroup/memory/docker/容器长ID/)
内存限额配置在memory.limit_in_bytes和memory.memsw.limit_in_bytes文件内。
# ②运行压力测试容器,验证CPU使用限额cgroup配置。
docker run -itd --cpus=0.7 hub.c.163.com/combk8s/jess/stress --vm 1
docker container ls
top
ctrl+c结束。按照容器ID,查询cgroup cpu子系统验证其CPU使用限额配置。
(cgroup cpu子系统所在路径为/sys/fs/cgroup/cpu/docker/容器长ID/)
CPU使用限额配置在cpu.cfs_quota_us和cpu.cfs_period_us文件内。
注意:请使用第2步中的container ID替换命令中的【容器长ID】
cd /sys/fs/cgroup/cpu/docker/容器长ID /
# ③运行压力测试容器,验证CPU权重限额cgroup配置。
docker run -itd --cpu-shares 2048 hub.c.163.com/combk8s/jess/stress --cpu 1
docker run -itd --cpu-shares 1024 hub.c.163.com/combk8s/jess/stress --cpu 1
docker run -itd --cpu-shares 512 hub.c.163.com/combk8s/jess/stress --cpu 1
cat /sys/fs/cgroup/cpu/docker/容器长ID/cpu.shares
# ④运行测试容器,验证IO限额cgroup配置。
docker run -it --device-write-bps /dev/vda:70MB hub.c.163.com/library/centos
cat /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
exit
lsblk
[3.Namespace]
# ①UTS Namespace
创建测试容器,分别在容器和宿主机验证主机名。
docker run -d -t -h container hub.c.163.com/library/centos
docker exec -it 容器ID bash
hostname
exit
hostname
# ②PID Namespace
docker exec命令进入容器验证容器进程信息。容器ID通过container ls命令确认。
docker container ls
docker exec -it 容器ID sh
ps
exit
ps -aux | grep dockerd
# ③User Namespace
运行测试容器,在容器内创建用户。退出容器,然后在宿主机验证用户名信息。
docker run -it hub.c.163.com/library/centos
useradd container
su - container
exit
exit
su - container