docker跨主机容器访问docker+weave

这玩意是真的折磨,不难,但是网上的教程太杂了,坑太多了。

需求现在有两台服务器,里面部署了两台docker,此时我想要用Adocker里面的容器去访问Bdocker里面的容器。

1. A主机 192.168.159.140

#安装weave

#先下载

wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave

#安装好了会在本地的/usr/local/bin下面多出来一个weave文件一定要看看下载成不成功

 

 #安装成功之后就是常规操作

#给权限

chmod a+x /usr/local/bin/weave

#初始化weave

weave launch

#初始化阶段会自动安装docker镜像和容器 出现这三个就行了

#这个时候去B主机也操作一下 也是安装这一套流程

 #接下来就是容器创建

weave env

eval $(weave env)

#上面两步操作完成进入容器创建

docker run --name shardMasterl11  -v /docker_container_data/mongodb/cluster/shard/shard1/data1:/data/db -d mongo:5.0.5 --replSet shard1 --shardsvr --port 27017

 #然后进入容器如果之前安装了ifconfig和ping指令接下来的可以跳过

#进入容器

docker exec -it shardMasterl11 /bin/bash

#更新apt

apt update

#下载ifconfig

apt install net-tools

#下载ping

apt install iputils-ping

#查看当前容器网络

 #ping测试

 #此时查看能否将B主机中mongo当作从机也就是查看上面的操作是否真实完全成功!

docker exec -it shardMasterl11 mongo

#这个ip地址记得改啊,别直接复制

rs.initiate({_id:"shard1",members:[{_id:0,host:"10.40.0.0:27017"},{_id:1,host:"10.32.0.1:27017"}]})

#效果展示

 

 

2. B主机 192.168.159.150

#安装weave

wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave

#给权限

chmod a+x /usr/local/bin/weave

#不同的来了 !!!!!这个地方不一样!!

#初始化weave B主机目标A主机 一定要做绑定

weave launch 192.168.159.140

#链接失败有几种情况,一种是时间问题,这种需要你更换时区,两台服务器要同步

 

# 若出现以下错误
[root@localhost ~]# weave status connections
-> 192.168.159.140:6783 failed host clock skew of -6124s exceeds 900s limit, retry: 2019-12-09 08:26:45.12313254 +0000 UTC m=+451.600743522

# 解决办法:重新设置时间和时区
[root@localhost ~]# tzselect # 选择时区
[root@localhost ~]# date -s "20191209 16:31:01" # 设置时间

#还有一种是防火墙问题,防火墙关闭就行

# 若出现以下错误
[root@localhost ~]# weave launch
WARNING: existing iptables rule

'-A FORWARD -j REJECT --reject-with icmp-host-prohibited'

will block name resolution via weaveDNS - please reconfigure your firewall.

# 解决办法:关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service # 停止firewall
[root@localhost ~]# systemctl disable firewalld.service # 禁止firewall开机启动

 

#安装完成之后可以查看链接状态

weave status connections、

 #接下来就是容器创建

weave env

eval $(weave env)

#上面两步操作完成进入容器创建

docker run --name shardMasterl12  -v /docker_container_data/mongodb/cluster/shard/shard1/data1:/data/db -d mongo:5.0.5 --replSet shard1 --shardsvr --port 27017

 

 #进入容器看网络

 总结

难度不难,但是网上的资料太坑了,这个东西我昨天弄了一天,光是weave下载都很难,很多都过期了,一步一个坑啊,我就应该昨天上午就听朋友的劝解尝试地址映射的,结果自己上头弄这个太坑了。

posted @ 2023-04-25 10:38  青木小老头  阅读(227)  评论(0)    收藏  举报