Docker跨网络overlay,macvlan

Docker machine环境做overlay网络

环境

consul      192.168.19.130
host1		192.168.19.20
host2		192.168.19.30

下载镜像

[root@consul ~]# docker search  consul
[root@consul ~]# docker pull progrium/consul 

启动consul容器

[root@consul ~]# docker run -d --restart always -p 8400:8400  -p 8500:8500  -p 8600:53/udp -h consul progrium/consul -server --bootstrap -ui-dir /ui

开放端口(三台主机)

[root@consul ~]# firewall-cmd --add-port={7946,4789,2733,2376}/tcp --premanent
[root@consul ~]# firewall-cmd --add-port={7946,4789,2733,2376}/udp --premanent
[root@consul ~]# setenforce 0

容器启动之后,可以用浏览器访问http://192.168.19.130:8500
在这里插入图片描述

在host1,host2上指定consul服务器的选项:

[root@host1 ~]# cat /etc/systemd/system/docker.service.d/10-machine.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic  --cluster-store=consul://192.168.19.130:8500 --cluster-advertise=ens33:2376
Environment=

注:这里是machine环境,修改对应的配置文件
若是普通环境下,修改/usr/lib/systemd/system/docker.service 这个文件

[Service]
Type=notify
#the default is not to use systemd for cgroups because the delegate issues still
exists and systemd currently does not support the cgroup feature set required
for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --cluster-store=consul://192.168.19.130:8500 --cluster-advertise=ens33:2376

重启docker服务

[root@host1 ~]# systemctl daemon-reload
[root@host1 ~]# systemctl restart docker

host2主机进行相同操作

完成以后,再去页面查看:
在这里插入图片描述

在host1节点创建一个overlay网络:

[root@host1 ~]# docker network create -d overlay ov_net1
f6d9bd46b902e46ffe5096608cd7f92ba9206e270e84f7e70a3ee2074f3162bf

任何一个节点创建的网络,在另一个节点都会自动生成

用创建好的overlay网络分别在host1,host2上面创建容器

[root@host1 ~]# docker run -dit --name test2 --network ov_net1 192.168.19.130:1000/busybox2
[root@host2 ~]# docker run -dit --name test3  --network ov_net1 192.168.19.130:1000/busybox2

最后验证互通

[root@host1 ~]# docker exec -it  159e555b77ac15fe8a9 sh
/ # ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3): 56 data bytes
64 bytes from 10.0.0.3: seq=0 ttl=64 time=1002.092 ms
64 bytes from 10.0.0.3: seq=1 ttl=64 time=1.307 ms
64 bytes from 10.0.0.3: seq=2 ttl=64 time=0.525 ms
64 bytes from 10.0.0.3: seq=3 ttl=64 time=1.304 ms

macvlan网络

host1,host2网卡打开混杂模式

[root@host1 ~]# ip link set ens33 promisc on
[root@host1 ~]# ip link show ens33
[root@host2 ~]# ip link set ens33 promisc on
[root@host2 ~]# ip link show ens33

host1创建macvlan网络,并运行主机

[root@host1 ~]# docker network create -d macvlan --subnet 172.22.16.0/24 --gateway 172.22.16.1 -o parent=ens33 mac_net1
[root@host1 ~]# docker run -dit --name bbox1 --ip 172.22.16.10 --network mac_net1 192.168.19.130:1000/busybox2

host2创建macvlan网络,并运行主机

[root@host2 ~]# docker network create -d macvlan --subnet 172.22.16.0/24 --gateway 172.22.16.1 -o parent=ens33 mac_net1
[root@host2 ~]# docker run -dit --name bbox2 --ip 172.22.16.11 --network mac_net1 192.168.19.130:1000/busybox2

进入容器,测试互通性

/ # ping 172.22.16.10
PING 172.22.16.10 (172.22.16.10): 56 data bytes
64 bytes from 172.22.16.10: seq=0 ttl=64 time=1.145 ms
64 bytes from 172.22.16.10: seq=1 ttl=64 time=0.850 ms
64 bytes from 172.22.16.10: seq=2 ttl=64 time=1.018 ms
64 bytes from 172.22.16.10: seq=3 ttl=64 time=0.389 ms

用 sub-interface 实现多 macvlan 网络

默认情况下,一个网卡只可以设置一个macvlan网络

[root@host1 ~]# docker network create -d macvlan --subnet 172.23.16.0/24 --gateway 172.23.16.1 -o parent=ens33 mac_net2
Error response from daemon: network dm-c92a63878c3d is already using parent interface ens33

实现多网络的方法:

参考链接

创建 VLAN 设备:
# ip link add link ens33 name ens33.10 type vlan id 10 

添加 IP:
# ip addr add 192.168.20.1/24 brd 192.168.200.255 dev ens33.10

启用设备:
    # ip link set dev ens33.10 up

关闭设备:
    # ip link set dev ens33.10 down

移除设备:
    # ip link delete ens33.10

首先设置host1,host2

[root@host1 ~]# ip link add link ens33 name ens33.10 type vlan id 10
[root@host1 ~]# ip link set dev ens33.10 up
[root@host2 ~]# ip  link add link ens33 name ens33.20 type vlan id 20
[root@host2 ~]# ip link set dev ens33:20 up

在host1,host2上面创建macvlan网络

[root@host1 ~]# docker network create -d macvlan --subnet=172.16.10.0/24 --gateway=172.16.10.254 -o parent=ens33.10 mac_net10
[root@host2 ~]# docker network create -d macvlan --subnet=172.16.20.0/24 --gateway=172.16.20.254 -o parent=ens33.20 mac_net20

运行容器

[root@host1 ~]# docker run -itd --name bbox3 --ip=172.16.10.11 --network mac_net10 192.168.19.130:1000/busybox2
[root@host2 ~]# docker run -dit --name bbox4 --ip=172.16.20.10 --network mac_net20 192.168.19.130:1000/busybox2 

Vm ESXI 网络支持Trunk的设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值