Docker(六)--docker的网络配置

本文深入解析Docker的网络模式,包括bridge、host、none及container模式的原理与应用。同时,介绍了自定义网络配置,如bridge、overlay、macvlan驱动的创建与使用,以及跨主机网络解决方案。

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

一.docker网络模式

1.docker有三种模式(bridge、host、none)
在这里插入图片描述

二.docker基本网络配置

bridge:
docker安装时会创建一个名为 docker0 的Linux bridge,新建的容器会自动桥接到这个接口。
在这里插入图片描述
默认选择的就是bridge
在这里插入图片描述
查看宿主机网桥

root@server2 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
docker0		8000.02421e6ebdb5	no		veth128d595

在这里插入图片描述
没有brctl命令,可在真机查看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在宿主机上查看docker容器网络产生的进程
在这里插入图片描述host:
host模式可以让容器共享宿主机网络栈,这样的好处是外部主机与容器直接通信,但是容器的网络缺少隔离性。
在这里插入图片描述
1.创建以网络类型为host的vm2
在这里插入图片描述
none:
none模式是指禁用网络功能,只有lo接口在这里插入图片描述

container:

在这里插入图片描述
1.使用container模式运行容器并且查看网络
在这里插入图片描述2.运行新的容器与container的网络模式下的数据库进行连接
在这里插入图片描述

三.高级网络配置

自定义网络模式,docker提供了三种自定义网络驱动:bridge、overlay、macvlan

1.创建自定义网桥
在这里插入图片描述
查看详细信息
在这里插入图片描述

2.以自定义网桥运行容器
在这里插入图片描述3.以自定义网桥运行容器,并测试两个容器能否ping通
在这里插入图片描述
docker之间的互连

指定网段和网关:–subnet 、–gateway

1.创建自定义网络,指定网段及其网关
在这里插入图片描述
2.使用自定义网络运行容器
在这里插入图片描述
使两个不同网段的容器通信
在这里插入图片描述
外网访问容器(通过端口影射)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
外网访问容器用到了docker-proxy和iptables DNAT
宿主机访问本机容器使用的是iptables DNAT
外部主机访问容器或容器之间的访问是docker-proxy实现

使用macvlan解决docker跨主机网络
1.为server1、server2两个虚拟机添加网卡,并打开混杂模式

[root@server1 ~]# ip addr show | grep eth
[root@server1 ~]# ip link set eth1 promisc on
[root@server1 ~]# ip addr show | grep eth1

在这里插入图片描述

[root@server2 ~]# ip addr show | grep eth
[root@server2 ~]# ip link set eth1 promisc on
[root@server2 ~]# ip addr show | grep eth1

在这里插入图片描述
注意:
1.因为多个MAC地址的网络数据包都是从同一块网卡上传输,所以需要打开网卡的混杂模式
2.如果不开启混杂模式,会导致macvlan网络无法访问外界,具体在不使用vlan时,表现为无法ping通路由以及同一网络内他其他主机

2.在两个虚拟机创建以macvlan模式为网络的容器

server1:

[root@server1 ~]# docker network create -d macvlan --subnet 172.25.0.0/24 --gateway 172.25.0.1 -o parent=eth1 macvlan1
[root@server1 ~]# docker run -it --name vm1 --network=macvlan1 --ip=172.25.0.11 ubuntu
[root@server1 ~]# docker run -it --name vm2 --network=macvlan1 --ip=172.25.0.12 ubuntu

server2:

[root@server2 ~]# docker network create -d macvlan --subnet 172.25.0.0/24 --gateway 172.25.0.1 -o parent=eth1 macvlan1
[root@server2 ~]# docker run -it --name vm1 --network=macvlan1 --ip=172.25.0.10 ubuntu

此时发现server1内部两个容器不能ping通,server1、2之间也不能ping通

原因:为开启eth1网卡

ip link set eth1 up

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值