(一)容器中的内存信息和主机中的内存信息
运行一个容器并查看其内存信息,查看后退出,再次查看本机的内存信息,发现两者一样
[root@server1 ~]# docker run -it --name vm2 ubuntu
root@9496b43f76d2:/# free -m
root@9496b43f76d2:/# [root@server1 ~]#
[root@server1 ~]# free -m
1.安装lxcfs 的RPM包
[root@server1 ~]# ls
[root@server1 ~]# yum install lxcfs-2.0.5-3.el7.centos.x86_64.rpm -y
2.启动lxcfs,注意在启动后按回车结束,千万不要用Crtl+c,因为Ctrl+c会将该进程杀死
[root@server1 ~]# cd /var/lib/lxcfs/
[root@server1 lxcfs]# ls
#按回车结束,千万不要用Crtl+c,因为Ctrl+c会将该进程杀死。
[root@server1 lxcfs]# lxcfs /var/lib/lxcfs/ &
3.启动lxcfs之后,会在/var/lib/lxcfs目录下生成两个目录
[root@server1 lxcfs]# cd /var/lib/lxcfs/
[root@server1 lxcfs]# ls
4.查看lvxfs的进程
[root@server1 lxcfs]# ps ax | grep lxcfs
(三)测试
我们将创建docker容器并限制内存,之后查看时发现总共的内存为256M,说明配置已经生效
[root@server1 ~]# docker run -it -m 300m \
> -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \
> -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw \
> -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \
> -v /var/lib/lxcfs/proc/stat:/proc/stat:rw \
> -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw \
> -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw \
> ubuntu
root@fa32d61190d4:/# free -m
总结:
1.相当于把宿主机的 /var/lib/lxcfs/proc/memoinfo 文件挂载到Docker容器的/proc/meminfo位置后。容器中进程读取相应文件内容时,LXCFS的FUSE实现会从容器对应的Cgroup中读取正确的内存限制。从而使得应用获得正确的资源约束设定。
2.不能直接把/var/lib/lxcfs/proc目录挂载到容器内的/proc目录下,因为容器内的/proc目录下本身是有内容的,是系统的进程信息等等,如果直接把/var/lib/lxcfs/proc目录挂载到容器内的/proc目录下,会覆盖容器内/proc目录下的内容,而/proc目录下记录的是容器的进程信息等等内容,是不能被覆盖的,所以不能直接把/var/lib/lxcfs/proc目录挂载到容器内的/proc目录下。
通常情况下,我们运行的容器都是以普通身份运行的,而且此时我们无法操作内核模块,控制swap分区,挂载usb磁盘,修改mac地址等,虽然在容器中显示的是超级用户,可是并不是真正的超级用户
(一)设置容器
1.运行一个容器,并尝试将eth0关闭
[root@server1 ~]# docker run -it --name vm1 ubuntu
#查看其ip以及网卡eth0的状态
root@385fb1c825c6:/# ip addr
#查看id,发现此时显示的是超级用户
root@385fb1c825c6:/# id
#down掉eth0,发现没有权限
root@385fb1c825c6:/# ip link set down eth0
[root@server1 ~]# docker run -it --name vm2 --privileged=true ubuntu
(二)测试
1.查看其容器的ip并将其网卡down掉,然后查看,发现此时网卡被down掉
root@d75b0de586d4:/# ip addr
root@d75b0de586d4:/# ip link set down eth0
root@d75b0de586d4:/# ip addr
root@d75b0de586d4:/# ip link set up eth0
root@d75b0de586d4:/# ip addr
root@d75b0de586d4:/# ip addr add 172.25.0.3/24 dev eth0
root@d75b0de586d4:/# ip addr
补充:
设置容器白名单:–cap-add