Dokcer网络通信详解,及如何利用网络名称空间模拟docker通信

本文深入探讨Docker容器间通信原理,介绍默认bridge网络模式及其实现机制,演示如何使用netns模拟网络隔离,理解Docker网络隔离的核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一、详解Docker容器的通信

默认情况下,启动docker时会采用bridge的网络链接方式,且网桥为docker0,docker0是启动docker服务时会自动创建的一个虚拟网卡,查看方式:

sudo docker inspect CONTAINER

 

docker容器之间的通信 就是通过网桥链接方式进行的

具体的通信方式为:

当我们启动一个docker容器时,docker会自动生成一对网卡,一半放在docker容器内,一半放在docker0上,容器之间的通信 就是通过docker0来进行转发

docker还有其他的三种网络模式,分别为host,container(不同容器公用网络名称空间,IPC,UTS),null,默认为bridge

 sudo docker network ls 查看网络

 

sudo yum install bridge-utils -y

查看网桥的具体信息

brctl show

 

可以看到docker0 上链接了4个虚拟网卡

查看主机网络名称空间中的网卡设备

Ip link show

 

可以看到每一个网卡都有@标志,其实就是链接到docker的另一半网卡

查看docker中的网桥设备

Docker network inspect bridge

 

docker中的网桥也是docker0

具体查看容器的信息

sudo docker container inspect web1

二、采用netns来模拟实现docker之间的通信

可以看到docker是通过网络名称空间来进行网络隔离,不同的网络名称通过一对网卡进行通信,它们是如何生成对一对网卡并且进行通信的呢?下面一起来做这个操作

首先下载ip包

查看下网络名称的帮助信息

ip netns

Usage: ip netns list

       ip netns add NAME

       ip netns set NAME NETNSID

       ip [-all] netns delete [NAME]

       ip netns identify [PID]

       ip netns pids NAME

       ip [-all] netns exec [NAME] cmd ...

       ip netns monitor

       ip netns list-id

1.我们最开始添加两个网络名称空间用来模拟网络隔离

Ip netns add r1

Ip netns add r2

2..增加一对网卡

ip link add name veth1.1 type veth peer name veth1.2

默认不会激活该对网卡

 

 

 可以通过ifconfig查看网卡是否被激活

2.将该对网卡的一端移动到网络名称空间r1中

ip link set dev veth1.2 netns r1

查看网络名称空间r1中的网卡信息

[root@localhost ~]# ip netns exec r1 ifconfig -a

 

ip [-all] netns exec [NAME] cmd …

可以修改网络名称r1中的网卡名称

[root@localhost ~]# ip netns exec r1 ip link set dev veth1.2 name eth0

[root@localhost ~]# ip netns exec r1 ifconfig -a

 

3.给veth1.1分配IP地址 并启动

[root@localhost ~]# ifconfig veth1.1 10.1.0.1/24 up

 

4.给r1网络名称空间中的eth0 添加ip 并激活

ip netns exec r1 ifconfig eth0 10.1.0.2/24 up

5.将veth1.1网卡 移至网络名称空间r2

[root@localhost ~]# ip link set dev veth1.1 netns r2

 

6.激活veth1.1

[root@localhost ~]# ip netns exec r2 ifconfig veth1.1 10.1.0.3/24 up

 

7.在r2中ping r1 中的eth0网卡

 

最后成功模拟了不同网络名称之间的通信,docker正是采用这种了网络名称隔离的方式进行网络隔离

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值