首页 > 技术文章 > Spring生态系列文章 >

Weave部署Docker项目(上)

更新时间:2018-07-15 | 阅读量(1,400)

Docker的部署比较麻烦的地方就是网络, 容器虽然极大的节约了资源,提高了安全性,但是由于每一个容器都是一个独立的环境,其网络也是独立的网络,和其他容器进行通信成了一个难题. 还好针对这个问题,各个公司提出的解决方案也比较多, 比如Pipework、Flannel、Weave、Open vSwitch 都是Docker的网络解决方案. 下面我们学习一下weave 的使用方法, 然后下一篇文章使用weave做一个简单的部署 weave项目地址: https://github.com/weaveworks/weave weave原理: Weave通过创建虚拟网络使Docker容器能够跨主机通信并能够自动相互发现。 通过weave网络,由多个容器构成的基于微服务架构的应用可以运行在任何地方:主机,多主机,云上或者数据中心。 应用程序使用网络就好像容器是插在同一个网络交换机上一样,不需要配置端口映射,连接等。 在weave网络中,使用应用容器提供的服务可以暴露给外部,而不用管它们运行在何处。类似地,现存的内部系统也可以接受来自于应用容器的请求,而不管容器运行于何处。 简单地说,就是weave创建了一个虚拟网络, 我们只需要把所有的Docer容器加入到该虚拟网络中,各个容器就处于相同的网段, 容器之间就可以自由的相互通信了, 即使真实的容器处于不同的主机或网络. ![image.png](https://upload-images.jianshu.io/upload_images/11369908-da73326ab5c6b85e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 下面我们就来自己实现一下整个部署过程: ### 1.安装: ``` curl -L git.io/weave -o /usr/local/bin/weave #下载 chmod a+x /usr/local/bin/weave #赋予执行权限 ``` ![image.png](https://upload-images.jianshu.io/upload_images/11369908-b1d712e5acc32264.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### 2.检查: ``` weave version #查看weave版本 weave status #查看weave状态 ``` ![image.png](https://upload-images.jianshu.io/upload_images/11369908-0e38f08d3a6f1260.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![image.png](https://upload-images.jianshu.io/upload_images/11369908-c6f6ebacab18f69d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) weave 网络默认为10.32.0网段 每个地址由4*8=32个比特构成 , /12表示 子网掩码位是12个bit 也就是子网可以有 2的(32-12)次方个ip ### 3.启动 ``` weave launch #启动weave weave launch ip | hostName #节点启动的时候连接到master (创建weave网络的主机叫master) ``` ### 4.检查是否启动成功 ``` docker ps # 如果有一个weaveworks/weave容器在运行就表示启动成功,后边两个检查并非必须! brctl show #检查网桥, weave启动还会生成一个名叫weave的网桥, (docker0网桥是docker默认生成的) docker network ls #检查docker中的网络配置, 发现其中也生成了一个Name为weave的网络 ``` ![image.png](https://upload-images.jianshu.io/upload_images/11369908-06ae8b290f8bfc07.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### 5.启动容器 1.weave run 镜像ID(此方式2.0版本以后已经废除) 2.eval $(weave env) 将docker命令代理给weave 执行,(如果先执行这个, docker命令启动的容器就会被自动加入weave网络,并自动分配IP) 3.docker run xxx (正常启动容器) --> 然后执行 - weave attach ContainerId IP #将容器加入到weave网络并分配指定IP - weave attach ContainerId #将容器加入到weave网络并自动分配IP ### 6.测试 ``` docker exec -it ContainerId /bin/bash 进入某一容器 ping xxx #ping 另一个weave网络内的容器ip, 如果能够ping 通说明网络已经连接OK ``` weave 的使用还是比较简单的,下一篇文章我们 下面总结一下常用的命令 ``` 物理机之间容器互通:weave connect $OTHER_HOST #可以把一台主机连接到weave网络 动态添加网络:对于不是通过weave启动的容器,可以通过weave attach 10.0.1.1/24 $id来添加网络(weave detach删除网络) 与宿主机网络通信:weave expose ip/24 或者weave expose,这个命令会把宿主机加入到weave 网络中, 宿主机就可以和容器之间自由通信了 安全性:可以通过weave launch -password wEaVe设置一个密码用于weave peers之间加密通信 查看weave路由状态:weave ps ```
叩丁狼学员采访 叩丁狼学员采访
叩丁狼头条 叩丁狼头条
叩丁狼在线课程 叩丁狼在线课程