天天看点

docker安全(权限设置)、cgroup方式设置限制权限

给docker一个root权限
docker run -it --name vm2 ubuntu
ip link set down eth0  #  失败
           
docker安全(权限设置)、cgroup方式设置限制权限
docker run -it --name vm2  --privileged ubuntu
ip link set down eth0
ip addr
           
docker安全(权限设置)、cgroup方式设置限制权限
内存限制
docker run --rm -it --name vm4 -m  100M --memory-swap  100M stress --vm 1 --vm-bytes 110M    # 出错所需内存太大,不足以分配
docker run --rm -it --name vm4 -m  100M stress --vm 1 --vm-bytes 200M 
 #  --vm 1  分配一个进程    --vm-bytes  
           
cpu限制
docker run --rm -it --cpu-shares 512 stress -c 1   # 给进程分配一个cpu
docker run --rm -it --cpu-shares 512 stress -c 4  # 用所有cpu进行测试
docker run --rm -it --cpu-shares 1024 stress -c 4
           
docker安全(权限设置)、cgroup方式设置限制权限
限制写的速率
docker run --rm -it --device-write-bps /dev/sda:M ubuntu
           
docker安全(权限设置)、cgroup方式设置限制权限
用cgroup作限制

打开一个6.5的虚拟机

下载libcgroup.x86_64

cgroup设置内存设置
/etc/init.d/cgconfig start
cd /cgroup
vim /etc/cgonfig.conf
group x1 {
    memory {
        memory.limit_in_bytes = ;
        memory.memsw.limit_in_bytes = ;
        }
}
cd
/etc/init.d/cgconfig restart
cgexec -g memory:x1 dd if=/dev/zero of=file1 bs=M counte=
           
docker安全(权限设置)、cgroup方式设置限制权限
vim /etc/cgonfig.conf
group x1 {
    memory {
        memory.limit_in_bytes = ;
        memory.memsw.limit_in_bytes = ;
        }
}
cd
/etc/init.d/cgconfig restart
cgexec -g memory:x1 dd if=/dev/zero of=file1 bs=M counte=
           

写入失败

docker安全(权限设置)、cgroup方式设置限制权限
docker安全(权限设置)、cgroup方式设置限制权限

举例:设置两个执行脚本,使一个脚本可以执行,一个不可以

./memapp1 # 需要4096个内存页,而./memapp2 # 需要8192个内存页

vim /etc/cgonfig.conf
group x1 {
    memory {
        memory.limit_in_bytes = ;
        memory.memsw.limit_in_bytes = ;
        }
}
           
docker安全(权限设置)、cgroup方式设置限制权限
useradd wdd
vim /etc/cgrules.conf
wdd:memapp1     memory          x1/
wdd:memapp2     memory          x1/
           
/etc/init.d/cgrules.conf   start
给memapp* 添加执行权限。
chmod +x memapp* 
mv *  /home/wdd
su -
./memapp1
./memapp2
           
docker安全(权限设置)、cgroup方式设置限制权限
cgroup 限制cpu
vim /etc/cgonfig.conf
group x2 {
    cpu {
        cpu.shares = ;
        }
}
           
docker安全(权限设置)、cgroup方式设置限制权限

cgroup设置blkio限制

vim /etc/cgonfig.conf
group x3 {
    blkio {
        blkio.throttle.read_bps_device = "252:0 1000000";
        }
}
cgexec -g blkio:x3 dd if=/dev/vda of=/dev/null &
           
cgroup设置进程
vim /etc/cgonfig.conf
group x4 {
    freezer {
        }
}
           
docker安全(权限设置)、cgroup方式设置限制权限
docker安全(权限设置)、cgroup方式设置限制权限
docker安全(权限设置)、cgroup方式设置限制权限
echo  > tasks
echo FROZEN > freezer.state
           
docker安全(权限设置)、cgroup方式设置限制权限

恢复:

echo THAWED > freezer.state