ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

跨主机通信

2019-12-20 22:56:32  阅读:286  来源: 互联网

标签:bin run 主机 consul 通信 docker01 docker root


JOIN容器:container(共享网络协议栈)

容器和容器之间。

[root@localhost ~]# docker pull busybox

[root@localhost ~]# docker run -itd --name web5 busybox:latest

把网卡指定web5:

[root@localhost ~]# docker run -itd --name web6 --network container:web5 busybox:latest

Web6:

[root@localhost ~]# docker exec -it web6 /bin/sh

/ # echo 123456 > /tmp/index.html

/ # httpd -h /tmp/

Web5:

[root@localhost ~]# docker exec -it web5 /bin/sh

/ # wget -O - -q 127.0.0.1

这时会发现,两个容器的ip地址一样。

PS:这种方法的使用场景:由于这种网络的特殊性,一般在运行同一个服务,并且合格服务需要做监控,以及日志收集,或者网络监控的时候,可以选择这种网络。

docker的跨主机网络解决方案

Overlay的解决方案(覆盖型解决方案)

实验环境:

Docker01:1.10

Docker02:1.20

Docker03:1.30

暂时不考虑防火墙和selinux安全问题。

将3台Dockerhost防火墙和selinux全部关闭,并且分别更改主机名称

[root@localhost ~]# hostnamectl set-hostname docker01

[root@localhost ~]# su -

[root@docker01 ~]# systemctl stop firewalld

[root@docker01 ~]# systemctl disable firewalld

[root@docker01 ~]# setenforce 0

Docker01:

[root@docker01 ~]# rz
导入镜像包:

跨主机通信
[root@docker01 ~]# docker load -i myprogrium-consul.tar
跨主机通信
-h:hostname,主机名 -server -bootstrap:集群

启动consul服务:consul:分布式,数据库,数据中心,集群的方式存储东西

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

报错重启服务:

[root@docker01 ~]# systemctl restart docker

PS:容器生产之后,我们可以通过浏览器访问consul服务,验证consul服务是否正常。访问dockerHost加映射端口。

访问:

http://192.168.1.10:8500/
跨主机通信
修改Docker02和Docker03的配置文件

Docker02:

[root@docker02 ~]# vim /usr/lib/systemd/system/docker.service

13行:

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376 --cluster-store=consul://192.168.1.10:8500 --cluster-advertise=ens33:2376

[root@docker03 ~]# systemctl daemon-reload

[root@docker03 ~]# systemctl restart docker

Docker03同上

PS:返回浏览器consul服务界面没找到KEY/VALUE----->DOCKER------>NODES会看到刚刚加入的docker02的信息。

在docker02上创建自定义网络: global(全局)

在docker02上创建的网络,我们可以看到它的SCOPE定义的是global(全局),意味着加入到consul这个服务的docker服务,都可以看到我们自定义的网络。

同理如果是用此网络创建的容器,会有两张网卡。

默认这张网卡的网段是10.0.0.0网段,如果想要docker01也可以看到这个网络,那么也只需在docker01的配置文件添加相应内容即可。

同理,因为是自定义网络,符合组定义网络的特性,可以直接通过docker容器的名称相互通信,当然也可以在自定义网络的时候,指定它的网段,那么是用此网络

docker network create -d overlay ov_net1
跨主机通信
在docker03上查看网卡:
跨主机通信
在docker01上修改配置文件,重启docker查看:

[root@docker01 ~]# vim /usr/lib/systemd/system/docker.service

13行:

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376 --cluster-store=consul://192.168.1.10:8500 --cluster-advertise=ens33:2376

[root@docker01 ~]# systemctl daemon-reload

[root@docker01 ~]# systemctl restart docker

[root@docker01 ~]# docker network ls
跨主机通信

Docker01:

[root@docker01 ~]# docker run -itd --name t1 --network ov_net1 busybox

[root@docker01 ~]# docker exec -it t1 /bin/sh

/ # ip a

Docker02:

[root@docker02 ~]# docker run -itd --name t2 --network ov_net1 busybox

[root@docker02 ~]# docker exec -it t1 /bin/sh

/ # ip a

Docker03:

[root@docker03 ~]# docker run -itd --name t3 --network ov_net1 busybox

[root@docker03 ~]# docker exec -it t1 /bin/sh

/ # ip a

跨主机通信

标签:bin,run,主机,consul,通信,docker01,docker,root
来源: https://blog.51cto.com/13997536/2460487

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有