Docker网络之Network Namespace

Docker网络中相关的命令非常少,但需要掌握的底层原理却又非常多。


1.Network Namespace

Docker网络底层原理是Linux的Network Namespace,所以说对于Linux Network Namespace的理解对Docker网络底层原理的理解就显得尤为重要了。

2.需求

通过手工的方式创建两个Network Namespace,并最终让它们相互互通,即可以通过ping命令测试成功。

在这里插入图片描述

3.创建两个命名空间

分别创建两个空间,命名为n1,和n2
在这里插入图片描述
因为每个网络空间都是独立的,所以每个Network Namespace都具有一个回环网络适配器io。

在这里插入图片描述
命令 ip netns exec ns1 ip a 是用于在指定的网络命名空间 “ns1” 中查看网络接口的配置信息。

  • ip a:显示网络接口的配置信息。
  • ip netns exec ns1:在网络命名空间 “ns1” 中执行命令。
  • 结果中的每一行显示一个网络接口的信息,包括接口名称、接口类型、MAC 地址和 IP 地址等。

获取网络命名空间 “ns1” 中网络接口的详细信息,包括接口名称、IP 地址、子网掩码、广播地址、MAC 地址等。

4.创建网络接口veth pair

  • 如果想要两个命名空间互通,则需要用到虚拟设备接口技术veth pair。 该技术需要一对网络接口分别置于两个命名空间中。

以下是具体的命令,用来创建veth-n1和veth-n2。
在这里插入图片描述
添加完成之后, 在通过ip link 命令查看当前网络的地址情况,可以看到新增了两个互通的veth pair。他们都具有mac地址,但是它们的状态都是DOWN,且都不具有IP。

在这里插入图片描述

5.命名空间添加veth接口

通过ip link set命令,将这两个网络接口分别分配给两个命名空间。

在这里插入图片描述
此时分别在两个命名空间中执行ip link命令,可以查看到,它们中分别新增了前面指定的一个网络接口。

在这里插入图片描述
此时在去看主机ip link , 就会发现之前的已经消失了~
·
在这里插入图片描述

6.为veth接口分配IP

前面创建的两个网络接口是没有IP的,需要通过命令,为每个指定的命名空间执行IP添加命令。

在这里插入图片描述
分配完之后再看~

== ip netns exec n1 ip a ==, 之后就能看到分配的ip地址了。
但是这个时候,状态还是为DOWN。

7.启动veth接口

使用命令开启ip link set dev 【接口】 up来启动指定的网络接口。

在这里插入图片描述

再去看的话就发现已经打开了。

在这里插入图片描述

8.相互ping

此时就可以完成我们当初提的需求了,互通~

在这里插入图片描述

9.总结

这个只是对Linux的Network Namespace的简单学习,Docker的网络知识不止于此。
仍需继续学习。


ok, 我已讲完。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爪哇小白2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值