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
在这里插入图片描述

不关闭退出,并且此时查看server1的物理机网络信息
在这里插入图片描述

此时在server2上ping不同,因为容器是隔离的
在这里插入图片描述
在这里插入图片描述
2.docker network 3种模式的设定

  • host

连上vm1,不关闭退出
在这里插入图片描述

用host网络模式创建vm2
[root@server1 ~]# docker run -it --name vm2 --net host ubuntu
在这里插入图片描述

此时在server2可以ping
在这里插入图片描述

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

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

在这里插入图片描述
此时nginx开启,在server2上可以查看
在这里插入图片描述

  • null

[root@server1 ~]# docker run -it --name vm3 --net none ubuntu
在这里插入图片描述

将vm3删除,重新运行
[root@server1 ~]# docker run -it --name vm3 --net container:vm1 ubuntu
在这里插入图片描述
注意:此时网络和vm1同

link 的作用:(自己生成解析文件)
在这里插入图片描述
如果不加link:不会自动生成解析
在这里插入图片描述

二、高级网络配置

在这里插入图片描述

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

查看手册:[root@server1 ~]# docker network create --help
在这里插入图片描述

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

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

在这里插入图片描述

将mynet删除后,自定的网络驱动就删除了
[root@server1 ~]# docker network rm mynet
在这里插入图片描述

  • 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
在这里插入图片描述
此时serve2上
在这里插入图片描述

在server2上创建网卡(此处和server1相同,因为不在同一主机)
在这里插入图片描述

在server2上创建vm1
在这里插入图片描述

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

在server1上:
建一个vm2:在mynet1上:
在这里插入图片描述

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

情况演示:单机不同网桥下此时不能通信
在server1上:建立mynet2
在这里插入图片描述

创建一个vm3:
在这里插入图片描述
[root@server1 ~]# docker run -it --name vm3 --net mynet2 --ip 172.74.26.11 ubuntu

在这里插入图片描述

此时vm1和vm2在一个桥接上,vm3在一个桥接上
在这里插入图片描述
注意:此时vm1和vm2可以互相通信,但vm1和vm3不可以通信
在这里插入图片描述

#####让单机不同网桥下容器可以进行通信
在这里插入图片描述

将vm3添加到mynet1上:
[root@server1 ~]# docker network connect mynet1 vm3
在这里插入图片描述

网络解决方案进阶

macvlan方案的实现:
在这里插入图片描述
删除网卡驱动
在这里插入图片描述
此时server1的网络状态
在这里插入图片描述

此时server2的网络状态
在这里插入图片描述

1.在两台docker上添加网卡,打开网卡混杂模式
在server1上:
在这里插入图片描述

[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

在这里插入图片描述

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

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上也同)
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

此时并没有多出驱动
在这里插入图片描述

但是此时另外建立,ping不通
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章