namespace主要实现资源的隔离(linux kernel > 3.8):
Mount Namespace
PID Namespace
Net Namespace #网络设备,网络栈,端口等
IPC Namespace #信号量,消息队列和共享内存
UTS Namespace #主机名与域名
User Namespace
Cgroups 限制物理资源(cpu,内存):
Linux Cgroups(Linux Control Group),Linux内核中用来设置资源限制的一个重要功能,
Cgroup对进程组的资源限制:
vim test.sh
#!/bin/bash
while :;do
:
done
chmod +x test.sh
./test.sh &
随后可以看到有cpu会被占满,如何对其进程进行限制?
Chroot 将指定目录设置为根目录,使的用户的操作被限制在当前目录而不影响其他目录:(docker实现文件系统级别的隔离 )
mkdir /test
cd test
chroot /test/
#报错 chroot:failed to run command ‘/bin/bash’:no such file or directory
#缺少chroot运行的环境,所依赖的各种库文件
#查询需要哪些库文件
ldd /bin/bash
linux-vdso.so.1 => (0x00007ffe0b970000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007fc7b3503000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc7b32ff000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc7b2f3b000)
/lib64/ld-linux-x86-64.so.2 (0x000055dbfbad7000)#可以得知都是在于lib64
cp -r /lib64/ test
#还需要/bin/bash
mkdir bin
cp /bin/bash bin/
ls
bin lib64
chroot /test/
#成功将test目录设为根目录,从而实现了文件系统间的隔离