1.查看doeker网络的信息
bridge、host、null
安装桥接服务:
[root@server1 ~]# yum install -y bridge-utils
此时会发现docker0的桥接信息
测试:
在拥有ubuntu镜像的基础上:
[root@server1 ~]# docker run -it --name vm1 ubuntu
此时在server2上ping不同,因为容器是隔离的
2.docker network 3种模式的设定
用host网络模式创建vm2
[root@server1 ~]# docker run -it --name vm2 --net host ubuntu
在server1上获取nginx镜像:并且建立vm2
运行一个vm2:(不能-p影射端口,因为此时和物理机server1共享网络)
[root@server1 ~]# docker run -d --name vm2 --net host nginx
e66e8774cdf912a085f3acaa6c8bf0e89e0afb03ceb76916af3d1e26d729c6fc
[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
[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相同,因为不在同一主机)
注意:此时不同主机还是不能进行通信,但是同一主机的不同容器之间可以
如何使不同网桥的容器进行通训??
情况演示:单机不同网桥下此时不能通信
在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的网络状态
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
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上也同)
在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