docker 1.12 惨痛升级之路

docker 1.12 发布了,内置了牛逼哄哄的swarm mode,网上各种文章吹得天花乱坠。我忍不住跟风也升级了,删除了之前的swarm,想到docker内置的swarm mode。于是悲惨的周末拉开了序幕。。。

之前的部署和依赖

之前,我基于docker 1.11部署了swarm集群(注意这个不是内置的swarm mode),创建了跨机器overlay网络,利用docker-compose完成了多节点多服务的部署,各个服务(跨虚拟机)之间能直接访问。基本上,实现了我对服务部署的各个需求。

转到docker 1.12之后的坑

docker1.12的特性并没有实现完整,偏偏我需要依赖于这些特性。悲了个剧。

不支持docker-compose

需要通过docker-compose转到bundle格式,可是这种格式显然不支持非常多的特性。转换的时候,报了一大堆warning,丢弃了之前很多细节配置。
算了,毕竟还是实验特性, 我忍了,直接写bash script创建service总行了吧。。。有这种想法的我还是太年轻。

service不支持ulimit、capabilities等参数

docker 1.12主推的是基于swarm mode的service, 然而这些service并不支持这种高阶特性(注:docker run支持,基于独立的swarm的docker-compose也支持)。
见这个issue。
但我部署的elasticsearch需要这些,怎么办?转到基础的docker run。可是坑继续存在。

overlay网络只支持swarm的service

前面说过,我是跨机器部署,所以需要各个机器上的container能直接通信。用docker 1.12的swarm mode能创建出overlay网络,可是这种网络现在根本不支持docker run!
详见这个issue, 居然要1.13才能支持。。。

结语

好了,彻底懵逼了。
我不得不回到最基本的docker run,修改了服务启动的方式,通过port绑定和vm host的地址进行服务之间的发现和通讯。
现在折腾了一个周末,才勉强把服务都搭起来了。总算是搭起来了!

你可能感兴趣的:(docker 1.12 惨痛升级之路)