博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决docker不能绑定静态的外网固定ip的问题
阅读量:2389 次
发布时间:2019-05-10

本文共 3417 字,大约阅读时间需要 11 分钟。

前段时间,我一直在研究如何给分配静态ip,主要的用途是让thrift进来和出来都走一个ip,还有就是爬虫可以独立ip地址,这样就很好的实现了爬虫的多ip方式…  但是随着nginx tcp的加入和开发了一个基于 socket的ip轮询访问模块解决了这两个问题…  当然也不能因为这两问题,就丢弃这问题了….

在docker run的时候,咱们可以添加-p参数来控制他的source来源ip。   下面的命令,对外来说,开放了192.168.1.200:9200的端口…  但是我们不仅仅满与此。 docker run -p 端口的实现,就是借用iptables来实现的…   我们iptables -t nat -L 的时候,就能看到docker帮我做好的nat关系…. docker做iptables的prerouting的时候,是追加了名叫docker的自定义链条…      差点又跑题了,如果是桥接模式,那么就致使当我们如果容器里面端口的变动比较大的时候,那么就会造成改动端口映射的操作的复杂性,需要每次的变更,做一个iptables prerouting映射…    但是如果你选择HOST网络模式,那么你又不好确定你的app绑定的是哪个ip地址,不是什么服务端都支持bind ip地址的… 有些搓蛋的服务端就默认绑定第一个ip地址…    这个时候,为docker容器分配一个独立的静态ip地址就显得很有必要了….  反正就一个ip地址,你可劲的折腾…..    

需要注意的是,docker run创建一个容器的时候,一定要把他的网卡模式改成docker的none…  一般在docker自定义网络的时候,都会把–net=none,再通过后期的一顿折腾让docker的容器有网络…..

接着,我如果想给容器,彻底的分配一个外网ip,或者管理ip,反正就一个静态的独立ip,怎么破? 用pipework是可以实现的。 但这东西稍复杂些,我们就先用系统的ip netns来解决…. 通过inspect我们知道了他的state pid . 

那么我们来开始绑定静态ip地址,先别看原理,暂时照着做…

这些都结束了后,我们会发现容器的网卡里面从一个lo,多出一个eth0网卡,网卡的ip地址正是我们刚才绑定的192.168.1.200

到此为止,docker绑定固定的静态ip的方法已经说明白了….   看了文章后,会发现docker绑定ip是比较的简单..  docker的网络是不怎么好理解的,这两天我多专供下docker分配ip的整个流程 (docker iptables)

转自:

转载地址:http://uupab.baihongyu.com/

你可能感兴趣的文章
协议森林14 逆袭 (CIDR与NAT)
查看>>
《视频直播技术详解》系列之一:采集
查看>>
《视频直播技术详解》系列之二:处理
查看>>
《视频直播技术详解》之(三):编码和封装
查看>>
《视频直播技术详解》系列之四:推流和传输
查看>>
《视频直播技术详解》系列之六:延迟优化
查看>>
如何实现1080P延迟低于500ms的实时超清直播传输技术
查看>>
P2P的原理和常见的实现方式(为libjingle开路)
查看>>
直播概念和流程框架
查看>>
直播平台的高并发架构设计
查看>>
Marshal.AllocHGlobal VS Marshal.AllocCoTaskMem, Marshal.SizeOf VS sizeof()
查看>>
C#中dynamic的正确用法
查看>>
C#4.0初探:dynamic 关键字
查看>>
socket编程之bind()函数
查看>>
几个RTP的开源实现
查看>>
CMake 使用方法
查看>>
流媒体 直播细节优化
查看>>
详解.NET IL代码
查看>>
详解.NET IL代码(补充)
查看>>
Python深入02 上下文管理器
查看>>