Docker网络模式

1、Docker网络模式简介

查看网络模式:

docker network ls

在这里插入图片描述

默认的三种网络模式:

  • bridge:桥接模式
  • host:主机模式
  • none:无网络模式

2、bridge模式

桥接模式是Docker的默认网络设置,Docker安装时会在主机上创建一个名为docker0的虚拟网桥,并选择一个和宿主机不同的IP地址和子网分配给docker0网桥。如果不指定--network,创建的容器默认都会挂到docker0上

桥接拓扑图:

在这里插入图片描述

1)、容器网卡与docker0网卡

docker0网卡:

在这里插入图片描述

启动容器后容器网卡桥接在docker0上

在这里插入图片描述

查看桥接情况

yum install -y bridge-utils
brctl show

在这里插入图片描述

docker network inspect bridge

在这里插入图片描述

bridge网络配置的subnet是172.17.0.0/16,网关是172.17.0.1(docker0)

容器创建时,docker会自动从172.17.0.0/16中分配一个IP,这里16位的掩码保证有足够多的IP可以供容器使用

2)、docker0网卡与宿主机网卡

查看宿主机上的iptables规则

iptables -t nat -S

在这里插入图片描述

在NAT表中,有这么一条规则:

-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

其含义是:如果网桥docker0收到来自172.17.0.0/16网段的外出包,把它交给MASQUERADE处理。而MASQUERADE的处理方式是将包的源地址替换成host的地址发送出去,即做了一次网络地址转换(NAT)

3、host模式

host模式下容器是不会拥有自己的ip地址,而是使用宿主机的ip地址和端口,此时容器的网络配置与host完全一样

在这里插入图片描述

使用host模式最大的好处就是性能,如果容器对网络传输有较高要求,则可以选择host网络

4、none模式

none模式:关闭模式,无法连外网

5、基于link实现单向通信

启动mysql数据库容器

docker run --name mydb -e MYSQL_ROOT_PASSWORD=123456 -d registry.cn-hangzhou.aliyuncs.com/hhzz/mysql

启动tomcat容器

docker run --name tomcat -p 8080:8080 -d tomcat

查看容器网络信息

docker inspect 容器名

mysql容器IP地址为172.17.0.2

在这里插入图片描述

tomcat容器IP地址为172.17.0.3

在这里插入图片描述

如果在tomcat应用中配置mysql的ip地址为172.17.0.2,是可以访问数据库的,但是如果mysql容器重新启动,容器的IP地址会更换

启动tomcat容器并link到mysql数据库(mydb这个容器一定要存在

docker run -itd --name tomcat --link mydb tomcat

进入tomcat容器ping mydb

[root@aliyun ~]# docker exec -it tomcat /bin/bash
root@04c27369381c:/usr/local/tomcat# ping mydb
PING mydb (172.17.0.2) 56(84) bytes of data.
64 bytes from mydb (172.17.0.2): icmp_seq=1 ttl=64 time=0.059 ms
64 bytes from mydb (172.17.0.2): icmp_seq=2 ttl=64 time=0.094 ms
64 bytes from mydb (172.17.0.2): icmp_seq=3 ttl=64 time=0.072 ms

此时tomcat应用中配置mysql的地址为mydb即可

6、利用bridge网桥实现双向通信

创建一个新的网桥:

docker network create -d bridge my_bridge

在这里插入图片描述

启动两个容器:

在这里插入图片描述

把第一个容器加入网桥:

docker network connect my_bridge tomcat

把第二个容器加入网桥:

docker network connect my_bridge mydb

查看桥接情况:

在这里插入图片描述

进入tomcat容器中ping mydb

[root@aliyun ~]# docker exec -it tomcat /bin/bash
root@d5038429dd8f:/usr/local/tomcat# ping mydb
PING mydb (172.18.0.3) 56(84) bytes of data.
64 bytes from mydb.my_bridge (172.18.0.3): icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from mydb.my_bridge (172.18.0.3): icmp_seq=2 ttl=64 time=0.071 ms
64 bytes from mydb.my_bridge (172.18.0.3): icmp_seq=3 ttl=64 time=0.079 ms

进入mydb容器ping tomcat

[root@aliyun ~]# docker exec -it mydb /bin/bash
root@89ff0d2403c3:/# ping tomcat
PING tomcat (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.080 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.110 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.096 ms
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

邋遢的流浪剑客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值