docker-bridge如何通信

docker网络

单机通信none网络

none(类似于NAT网络) 安全性,隔离性  none 网络就是什么都没有的网络。挂在这个网络下的容器除了
lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定使用 none 网络
 我们不禁会问,这样一个封闭的网络有什么用呢?  其实还真有应用场景。封闭意味着隔离,一些对安全性要求高并且不需要联网的应用可以使用
none 网络。  比如某个容器的唯一用途是生成随机密码,就可以放到 none 网络中避免密码被窃取。
 当然大部分容器是需要网络的,我们接着看 host 网络

host(类似仅主机网络),复制啦本地的网卡

连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。可以通过
–network=host 指定使用 host 网络  直接使用 Docker host 的网络最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择 host
网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host 上已经使用的端口就不能再用了  Docker
host 的另一个用途是让容器可以直接配置 host 网路。比如某些跨 host
的网络解决方案,其本身也是以容器方式运行的,这些方案需要对网络进行配置,比如管理 iptables,大家将会在后面进阶技术章节看到

以上介绍都是docker的基本网络几乎在生产环境中用不到,但是必须会
(以上文档是以前看技术大佬的博客总结的,具体是谁忘记了,如有侵犯请联系作者!!)
bridge(类似于桥接网络)

bridge实验室图

在这里插入图片描述
先创建一个网卡为docker0的容器(web1)
[root@bogon ~]# docker run -itd --name web1 centos /bin/bash
进入容器查看IP

[root@bogon ~]# docker exec -it web1 /bin/bash

在这里插入图片描述然后exit退出

创建网卡,指定网卡名称为my_net1(自定义网段,并且指定网关)

[root@bogon ~]# docker network  create  --driver bridge  --subnet  172.22.16.0/24 --gateway  172.22.16.1 my_net1 

在这里插入图片描述
查看网卡信息

[root@bogon ~]# brctl show 
bridge name	bridge id		STP enabled	interfaces
br-502656389f92		8000.024231624cde	no		
docker0		8000.0242666bcbc9	no		
virbr0		8000.525400d5743c	yes		virbr0-nic

再根据my_net1网卡创建一个test1的容器(不需要指定IP)

[root@bogon ~]# docker run  -itd --name test1 --network my_net1 busybox
7006b8232713130deb278c187de957f4505a3946b0e718cb1ca1da595e7c2119

然后在根据my_net1创建一个test2的容器(指定IP:172.22.16.10)

[root@bogon ~]# docker  run -itd --name test2 --network my_net1 --ip 172.22.16.10  busybox 
d8d7dbb07c0a45e85cfa0b95774b1226a4b6717b534e7fcf96d7dc1d96495c34

进入test2中ping test1和web1

在这里插入图片描述
然后pingtest1和web1(查看一下test1和web1的IP)
web1的IP

在这里插入图片描述
test1的IP
在这里插入图片描述
然后进到test2中ping test1和web1的IP

在这里插入图片描述
表示可以ping的同test1,但是ping不同web1因为web1指定的是docker本地网卡
这个时候我们开启路由转发功能,再次ping一下web1的

[root@bogon ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
[root@bogon ~]# sysctl -p
net.ipv4.ip_forward = 1

在这里插入图片描述
表示还是ping不同,

这个时候我们添加一把my_test2的网卡添加到web1中,就可以ping同啦

[root@bogon ~]# docker network connect  my_net1  web1

进入web1容器中,查看IP

[root@bogon ~]# docker exec  -it web1  /bin/bash

在这里插入图片描述
最后test2可以ping web1中的eth1表示可以通信

在这里插入图片描述
表示欧克

最后查看一下bridge(网卡)的信息
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值