目录
一.容器技术的前世今生
从1979年的chroot到2013年的docker
二.Namespace
1.NameSpace介绍
利用命名空间来隔离进程
2.linux系统中的NameSpace分类
命名空间分六类:进程命名空间,网络命名空间,IPC命名空间,挂载命名空间,UTS命名空间,用户命名空间
三.NameSpace 应用案例
相关命令
1.创建net命名空间
ip netns add aaaa
#创建一个名为aaaa的命名空间
2.删除net命名空间
ip netns delete aaaa
删除已创建的网络命名空间aaaa
3.在net命名空间中执行命令
ip netns exec aaaa bash
在网络命名空间中执行bash命令,如果想退出,需要使用exit
4.查看已经创建的网络命名空间
ip netns ls
5.退出当前的net命名空间
exit
6.在net命名空间中执行查看网络连接(网卡)命令
ip link
在linux主机中则需要输入 ip netns exec aaaa ip link list
7.在命名空间中查看防火墙规则
iptables -t nat -nl
8.在命名空间中查看路由器表
route -n
linux主机中就是 ip netns exec aaaa route -n
9.创建虚拟网卡(同时创建一对虚拟网卡)
ip link add veth0 type veth peer name veth1
type veth 说明veth0网卡类型是虚拟以太网网卡
peer name 伙伴名
eth以太网;v代表virtual,虚拟
在物理机上查看: ip a s
10.迁移虚拟网卡到命名空间中
这两个网卡都还属于 "default"或"global"命名空间,和物理网卡一样。把其中一个网卡转移到命名空间aaaa中
ip link set veth1 netns aaaa (把创建的veth1网卡添加到aaaa网络命名空间中)
11.在linux系统中查看命名空间中的网络
ip netns exec aaaa ip link
12.从命名空间中迁出虚拟网卡
linux命令行中: ip netns exec aaaa ip link delete veth1
当删除命名空间中的虚拟网卡时,会将物理机中的的虚拟网卡一起干掉
就是 veth0 和 veth1 一起被删除
13.配置虚拟网卡ip地址
ip netns exec aaaa ip addr add 192.168.50.2/24 dev veth1
在linux中查看网络状态:ip netns exec aaaa ip addr
在虚拟网卡配置ip后,还是属于down状态,需要启动后才能用
14.启动虚拟网卡
ip netns exec aaaa ip link set veth1 up
ip netns exec aaaa ip link set lo up
此时,物理机中的虚拟网卡还是没有地址,因此需要给物理机的虚拟网卡配一下地址
15.给物理机的虚拟网卡配置ip地址
ip addr add 192.168.50.3/24 dev veth0
查看状态
ip a s veth0
启动
ip link set veth0 up
16 ping一下aaaa中的ip
ping 192.168.50.2
此时的命名空间aaaa,只能访问192.168.50.0/24这个网段如果需要访问物理机中所有的网段,需要添加下默认路由条目(跟fq有点像)
ip netns exec aaaa ip route add default via 192.168.50.3
将 192.168.50.3作为默认网关,来进行转发数据包