Docker容器使用静态独立的外部IP(便于集群组建)

http://my.oschina.net/gudaoxuri/blog/513923

需要使用Docker虚拟化Hadoop/Spark等测试环境,并且要可以对外提供服务,要求是完全分布式的部署(尽量模拟生产环境)。那么我们会遇到几个问题:

Container IP 是动态分配的
Container IP 是内部IP,外部无法访问(如对外提供HDFS服务可能会遇到Client无法访问DataNode,因为DataNode注册的是内部IP)
针对第一个问题有不少的方案,可以指定静态的IP,对第二个问题,我们可以使用–net=host解决,但这会导致对外只有一个IP,集群各个Slave的端口都要修改。至于pipework简单地看了下,好像也解决不了。

所以目前看上去只能使用看上去不是很优雅的方案解决,如下:

Solution

方法很简单:为Docker宿主网卡绑定多个IP,把这些IP分配给不同的容器。

Reference

http://stackoverflow.com/questions/25036895/how-to-expose-docker-containers-ip-and-port-to-outside-docker-host-without-port/25041782#25041782

http://dl528888.blog.51cto.com/2382721/1604167