docker跨宿主机容器通讯

1152人浏览 / 0人评论

一、docker跨宿主机容器通讯--macvlan

自定义创建网络

docker network create -d bridge --subnet 172.30.0.0/16 --gateway 172.30.0.1 liangzeyu

[root@1 ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
68de28fbcfa2        bridge              bridge              local
97ffb2bf08ee        host                host                local
f26644a368ce        liangzeyu           bridge              local
2a88f05650d5        none                null                local
 

接下来演示macvlan网络如何创建

macvlan类似于虚拟机的桥接网络

创建命令:

[root@1 ~]# docker network create -d macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1

3e91c657e7b9c3a974a5a9914b3e92e09d82009686d44f955ec531170d887b4b
 

启动容器的时候一定要指定网卡

[root@1 ~]# docker run -it --network macvlan_1 --ip 10.0.0.105 alpine:latest
 

二、docker跨宿主机容器通讯--overlay

创建consul存储库

[root@1 ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

##-h是指定容器里面的主机名

 

访问8500会出现consul的web管理界面

 

 

2、然后在其他主机上配置哈,如何其他集群主机,配置也如下,只是修改下advertise就行

##企业环境写内网地址,我这是测试环境

[root@baiduyueaaa ~ ] # cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
  "cluster-store": "consul://49.234.14.64:8500",
  "cluster-advertise": "106.12.100.206:2376" 
}
 

重启docker服务

systemctl restart docker

 

3、在服务端的consul界面上访问key/value

 

发现106的客户端已经进来了。

4、客户端创建网络

[root@baiduyueaaa ~ ] # docker network create -d overlay --subnet 172.26.0.0/16--gateway 172.26.0.1 liang
 

查看网络

[root@baiduyueaaa ~ ] # docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3cf27dc55ad4        bridge              bridge              local
a20a436be108        host                host                local
54ab0121a530        liang               overlay             global
 

然后你会发现集群中的宿主机都会有这个networ网段。

===

测试在客户端主机上创建docker容器

[root@baiduyueaaa ~ ] # docker run -it --network liang --name liangzeyu a606bcc0a19 /bin/bash
 

然后在集群中的一台中 ping一下是通的 

全部评论