Docker 容器与 swarm 集群实战——docker 网络模式

一、基本网络配置

1.查看doeker网络的信息
bridge、host、null
在这里插入图片描述
安装桥接服务:
[root@server1 ~]# yum install -y bridge-utils
此时会发现docker0的桥接信息
在这里插入图片描述
测试:
在拥有ubuntu镜像的基础上:

[root@server1 ~]# docker run -it --name vm1 ubuntu
Docker 容器与 swarm 集群实战——docker 网络模式_第1张图片

不关闭退出,并且此时查看server1的物理机网络信息
Docker 容器与 swarm 集群实战——docker 网络模式_第2张图片

此时在server2上ping不同,因为容器是隔离的
Docker 容器与 swarm 集群实战——docker 网络模式_第3张图片
Docker 容器与 swarm 集群实战——docker 网络模式_第4张图片
2.docker network 3种模式的设定

  • host

连上vm1,不关闭退出
Docker 容器与 swarm 集群实战——docker 网络模式_第5张图片

用host网络模式创建vm2
[root@server1 ~]# docker run -it --name vm2 --net host ubuntu
Docker 容器与 swarm 集群实战——docker 网络模式_第6张图片

此时在server2可以ping
Docker 容器与 swarm 集群实战——docker 网络模式_第7张图片

在server1上获取nginx镜像:并且建立vm2

运行一个vm2:(不能-p影射端口,因为此时和物理机server1共享网络)
[root@server1 ~]# docker run -d --name vm2 --net host nginx
e66e8774cdf912a085f3acaa6c8bf0e89e0afb03ceb76916af3d1e26d729c6fc

Docker 容器与 swarm 集群实战——docker 网络模式_第8张图片
此时nginx开启,在server2上可以查看
Docker 容器与 swarm 集群实战——docker 网络模式_第9张图片

  • null

[root@server1 ~]# docker run -it --name vm3 --net none ubuntu
Docker 容器与 swarm 集群实战——docker 网络模式_第10张图片

将vm3删除,重新运行
[root@server1 ~]# docker run -it --name vm3 --net container:vm1 ubuntu
Docker 容器与 swarm 集群实战——docker 网络模式_第11张图片
注意:此时网络和vm1同

link 的作用:(自己生成解析文件)
Docker 容器与 swarm 集群实战——docker 网络模式_第12张图片
如果不加link:不会自动生成解析
Docker 容器与 swarm 集群实战——docker 网络模式_第13张图片

二、高级网络配置

Docker 容器与 swarm 集群实战——docker 网络模式_第14张图片

docker提供了3种自定义网络驱动:
bdidge、overlay、macvlan

查看手册:[root@server1 ~]# docker network create --help
Docker 容器与 swarm 集群实战——docker 网络模式_第15张图片

创建自定义网络驱动:默认是bridge

[root@server1 ~]# docker network create -d bridge mynet
33990305dd6bc45bd49687f56d25fc24b2523a166e5e1aa0763bf317c9dcb9be

Docker 容器与 swarm 集群实战——docker 网络模式_第16张图片

将mynet删除后,自定的网络驱动就删除了
[root@server1 ~]# docker network rm mynet
Docker 容器与 swarm 集群实战——docker 网络模式_第17张图片

  • bridge 举例

创建网段下的网卡驱动
在这里插入图片描述

[root@server1 ~]# docker network create -d bridge --subnet 172.73.26.0/24 --gateway 172.73.26.1 mynet1
46dbdb19dda5b162f3862c97dac60d0fdf51268a0e5566ee12e18e12abd0ba2a

创建此网卡驱动下的vm1
[root@server1 ~]# docker run -it --name vm1 --net mynet1 --ip 172.73.26.10 ubuntu
Docker 容器与 swarm 集群实战——docker 网络模式_第18张图片
此时serve2上
Docker 容器与 swarm 集群实战——docker 网络模式_第19张图片

在server2上创建网卡(此处和server1相同,因为不在同一主机)
Docker 容器与 swarm 集群实战——docker 网络模式_第20张图片

在server2上创建vm1
Docker 容器与 swarm 集群实战——docker 网络模式_第21张图片

注意:此时不同主机还是不能进行通信,但是同一主机的不同容器之间可以

在server1上:
建一个vm2:在mynet1上:
Docker 容器与 swarm 集群实战——docker 网络模式_第22张图片

如何使不同网桥的容器进行通训??

情况演示:单机不同网桥下此时不能通信
在server1上:建立mynet2
Docker 容器与 swarm 集群实战——docker 网络模式_第23张图片

创建一个vm3:
Docker 容器与 swarm 集群实战——docker 网络模式_第24张图片
[root@server1 ~]# docker run -it --name vm3 --net mynet2 --ip 172.74.26.11 ubuntu

Docker 容器与 swarm 集群实战——docker 网络模式_第25张图片

此时vm1和vm2在一个桥接上,vm3在一个桥接上
Docker 容器与 swarm 集群实战——docker 网络模式_第26张图片
注意:此时vm1和vm2可以互相通信,但vm1和vm3不可以通信
Docker 容器与 swarm 集群实战——docker 网络模式_第27张图片

#####让单机不同网桥下容器可以进行通信
Docker 容器与 swarm 集群实战——docker 网络模式_第28张图片

将vm3添加到mynet1上:
[root@server1 ~]# docker network connect mynet1 vm3
Docker 容器与 swarm 集群实战——docker 网络模式_第29张图片

网络解决方案进阶

macvlan方案的实现:
Docker 容器与 swarm 集群实战——docker 网络模式_第30张图片
删除网卡驱动
Docker 容器与 swarm 集群实战——docker 网络模式_第31张图片
此时server1的网络状态
Docker 容器与 swarm 集群实战——docker 网络模式_第32张图片

此时server2的网络状态
Docker 容器与 swarm 集群实战——docker 网络模式_第33张图片

1.在两台docker上添加网卡,打开网卡混杂模式
在server1上:
Docker 容器与 swarm 集群实战——docker 网络模式_第34张图片

[root@server1 ~]# ip link set up eth1
[root@server1 ~]# ip link set eth1 promisc on

在这里插入图片描述

在server2上:
[root@server2 ~]# ip link set up eth1
[root@server2 ~]# ip link set eth1 promisc on

在这里插入图片描述
2.在两台docker主机上创建macvlan网络
在server1上:

[root@server1 ~]# docker network create -d macvlan --subnet 172.73.26.0/24 --gateway 172.73.26.1 -o parent=eth1 mac1
8ba8e487cdd230fed0845d4a0ac2f1c160853949cdee756c39018f3b0041a6af

Docker 容器与 swarm 集群实战——docker 网络模式_第35张图片

在server2:
Docker 容器与 swarm 集群实战——docker 网络模式_第36张图片

3.在server1和server2上创建vm1

[root@server1 ~]# docker run -it --name vm1 --net mac1 --ip 172.73.26.11 ubuntu

[root@server2 ~]# docker run -it --name vm1 --net mac1 --ip 172.73.26.12 ubuntu

此时可以在server1的vm1上ping通servr2的vm1(在server2上也同)
Docker 容器与 swarm 集群实战——docker 网络模式_第37张图片
Docker 容器与 swarm 集群实战——docker 网络模式_第38张图片

macvlan 子接口

在server1上设置子接口

[root@server1 ~]# docker network create -d macvlan --subnet 172.74.26.0/24 --gateway 172.74.26.1 -o parent=eth1.1 mac2
101412a2a567fae6ba316e35289207df1711874dcd9658c0db3a702b57226773

Docker 容器与 swarm 集群实战——docker 网络模式_第39张图片

此时并没有多出驱动
Docker 容器与 swarm 集群实战——docker 网络模式_第40张图片

但是此时另外建立,ping不通
Docker 容器与 swarm 集群实战——docker 网络模式_第41张图片

你可能感兴趣的:(企业)