【Docker】Docker底层技术应用

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41614928/article/details/96427267

1. 使用命名空间nameSpace

(1)通过实训平台进入到操作系统界面,在#后输入docker run -i -t -d --name web centos /bin/bash命令,运行名为web的容器,然后在#后输入docker ps -l,查看运行的容器。示例代码如图1所示:
在这里插入图片描述
(2)在#后输入docker inspect --format ‘{{.State.Pid}}’ web命令,查看容器的进程Pid,示例代码如图2所示:
在这里插入图片描述
(3)在#后输入mkdir /var/run/netns命令,创建一个命名空间,然后在#后输入ln -s /proc/5513/ns/net /var/run/netns/web命令(id为查看的web容器Pid)示例代码如下:

[root@xxx ~]# mkdir /var/run/netns

[root@xxx ~]# ln -s /proc/5513/ns/net /var/run/netns/web

(4)在#后输入ip netns命令,查看命名空间,示例代码如图3所示:
在这里插入图片描述
(5)在#后输入ip netns exec web ip addr命令,查看命名空间IP,查看容器的IP地址。示例代码如图4所示:
在这里插入图片描述
(6)在#后输入ip netns exec web ip addr add local 172.17.0.4/16 brd + label eth0:1 dev eth0命令,添加命名空间IP地址,示例代码如下:

[root@xxx ~]# ip netns exec web ip addr add local 172.17.0.4/16 brd + label eth0:1 dev eth0

(7)在#后输入ip netns exec web ip addr命令,查看添加命名空间地址后容器信息,示例代码如图5所示:
在这里插入图片描述

2. 使用和管理Cgroups

(1)在#后输入ls /sys/fs/cgroup/命令,查看Cgroupsfs虚拟文件系统中的内容,示例如图6所示,示例代码如下:

[root@xxx ~]# ls /sys/fs/cgroup/

(2)在#后输入ls /sys/fs/cgroup/cpuset/命令,查看子系统对资源进行的限制,查看cpuset下的控制文件。示例代码如图6所示:
在这里插入图片描述

(3)在#后输入cat /sys/fs/cgroup/cpuset/cpuset.cpus命令和cat /sys/fs/cgroup/cpuset/cpuset.mems命令,查看限制这个Cgroups的进程只能在0号CPU上运行,且只会从0号内存节点分配内存。示例代码如图7所示:
在这里插入图片描述
(4)在#后输入cat /sys/fs/cgroup/cpuset/tasks命令,这里面记录了Cgroups的所有进程(包括线程),示例代码如图8所示:
在这里插入图片描述

(5)在#后输入mkdir /sys/fs/cgroup/cpuset/child/命令,创建一个Cgroups,然后在#后输入ls /sys/fs/cgroup/cpuset/child/命令,可以查看目录下自动创建的控制文件,示例代码如图9所示:
在这里插入图片描述

(6)在#后输入以下命令,设置自己创建的控制文件,把“/”(根目录)当前进程ID写入tasks文件,使能Cgroups把当前进程移动到这个Cgroups中。示例代码如下:

[root@xxx ~]# echo 0 > /sys/fs/cgroup/cpuset/child/cpuset.cpus

[root@xxx ~]# echo 0 > /sys/fs/cgroup/cpuset/child/cpuset.mems

[root@xxx ~]# echo $$ > /sys/fs/cgroup/cpuset/child/tasks

展开阅读全文

没有更多推荐了,返回首页