Docker Swarm Mode中容器多网络多IP registrator注册服务IP的问题
问题描述
在这篇文章《Docker Swarm Mode中部署SpringCloud微服务》之后
遇到了点新问题。
在运行时指定自己网络的时候,容器里面多个网络,多个IP,但是注册的不是固定注册某个网卡的IP作为服务IP。
这就导致有时候注册的IP不是属于overlay网络的IP。服务访问就会出现问题。
在这篇文章《Docker Swarm Mode中部署SpringCloud微服务》之后
遇到了点新问题。
在运行时指定自己网络的时候,容器里面多个网络,多个IP,但是注册的不是固定注册某个网卡的IP作为服务IP。
这就导致有时候注册的IP不是属于overlay网络的IP。服务访问就会出现问题。
有同志容器的日志写到了自己容器里面。但是出问题后,一直写,导致磁盘写满。
以上是问题出现的前奏。
我接着清理下无用的容器,先快速释放部分空间出来。
1 | docker system prune -a |
紧接着我就出去帮忙别的东西了。
过一会被告知,Jenkins构建失败,而不止一个项目。每个项目出错如下:
[TOC]
在Docker Swarm中部署Spring Cloud的服务.
本来服务注册是由Eureka做的,但是Eureka团队停止对该项目支持.于是我们转而转向consul.
经实践,最终定下来新的微服务部署用到的技术如下.
Docker+Consul+Registrator
三台机:
node1:192.168.99.100
node2:192.168.99.101
node3:192.168.99.102
规划如下:
node1: Consul Server,Docker Swarm master
node2: Consul Server,Docker Swarm node
node3: Consul Client,Docker Swarm node
一般建议consul server数量为3~5个,做高可用,但是由于是演示,机器也比较渣,就不启用多台作为实验。
[TOC]
整理了一些觉得有用的资料和踩过的坑.
1.因为Eureka即将停止维护了
2.Consul要更强大点,带配置中心
主要注意挂载目录以便数据持久化,命名hostname.
1 | docker run -d --name rabbitmq -p 4369:4369 -p 8080:15672 -p 5671-5672:5671-5672 --restart=always --hostname my-rabbit -v /data/rabbitmq:/var/lib/rabbitmq rabbitmq:3-management |
一个连接rabbitmq的python例子.
1 | # coding: utf-8 |
其实就是通过flask接受url传递过来的命令,然后调用SDK相关API执行docker exec
命令,然后将结果返回给页面。
1 | pip install flask docker |
1 | # coding: utf-8 |
模板
1 | <!DOCTYPE html> |
如图:
某日看到妹子整理表格,需要对excel一万多条记录中的重复数据删除处理。
但是处理两小时没好,耽误了两人看动漫时间,最后帮她搞了这个脚本。
为了速度,存在很多硬编码,但是应该不影响阅读。
已经经历两次开发环境磁盘占用满的情况的。
第一次是部署太频繁,然后有很多无用的images没有删除掉。
第二次是docker容器,某些服务写了很多日志,导致磁盘被写满。
撇开这些设置不当的问题,怎么清理掉一些“垃圾”,让docker占用空间变得小一点?
Docker占用磁盘的主要有以下几样东西:
Docker Images
Docker Containers
Docker Logs
对于输出日志特别多的程序,Logs还是不容小觑的。
尤其是开发服务器,频繁的部署,会导致产生很多用不上的Images也占用在空间。
而Container占用空间突然增大,一般也主要是一些异常产生的文件太多,写了太多logs在容器内所致。