从Linux网络虚拟化探究容器网络
容器的本质是一个特殊的进程,特殊在为期创建了 Namespace 隔离运行环境,并用 CGroup 为其控制资源开销。借助这两个技术我们可以成功实现应用容器化,但如何让多个容器在网络环境相互通信,以及访问外部网络,或者让外部网络访问特定容器等问题,则还需要利用一些Linux网络虚拟化技术。 在Linux提供的众多Namespace中,我们可以其中Network Namespace 来给容器配置独立的网络视图。 现在让我们从linux提供的一些网络虚拟化技术来实现一个简易版的"docker"。 网络命名空间隔离 通过一个小实验demo来体验网络命名空间 通过使用命令 readlink proc/$$/ns/net来查看宿主机的网络空间 我们也可以创建Network Namespace,通过ip netns 工具来创建 在这两个网络命名空间上创建两个bash容器 进行观察, 发现 网络空间的值改变了 查看接口 查看路由表 发现这个网络命名空间里的网络都被重置了,同样的fangcong2这个空间应该也如此。 不同的容器( fangcong1 和 fangcong2 )拥有自己独立....