前段時間,我一直在研究如何給Docker分配靜態(tài)ip,主要的用途是讓thrift進來和出來都走一個ip,還有就是爬蟲可以獨立ip地址,這樣就很好的實現(xiàn)了爬蟲的多ip方式… 但是隨著nginx tcp的加入和開發(fā)了一個基于Python socket的ip輪詢訪問模塊解決了這兩個問題… 當然也不能因為這兩問題,就丟棄這問題了….
在Docker run的時候,咱們可以添加-p參數(shù)來控制他的source來源ip。 下面的命令,對外來說,開放了192.168.1.200:9200的端口… 但是我們不僅僅滿與此。 docker run -p 端口的實現(xiàn),就是借用iptables來實現(xiàn)的… 我們iptables -t nat -L 的時候,就能看到docker幫我做好的nat關(guān)系…. docker做iptables的prerouting的時候,是追加了名叫docker的自定義鏈條… 差點又跑題了,如果是橋接模式,那么就致使當我們?nèi)绻萜骼锩娑丝诘淖儎颖容^大的時候,那么就會造成改動端口映射的操作的復(fù)雜性,需要每次的變更,做一個iptables prerouting映射… 但是如果你選擇HOST網(wǎng)絡(luò)模式,那么你又不好確定你的app綁定的是哪個ip地址,不是什么服務(wù)端都支持bind ip地址的… 有些搓蛋的服務(wù)端就默認綁定第一個ip地址… 這個時候,為docker容器分配一個獨立的靜態(tài)ip地址就顯得很有必要了…. 反正就一個ip地址,你可勁的折騰…..
Pythondocker run -it -p 192.168.1.200:9200:9200 redis_cluster 9200Pythonroot@ubuntu:~# iptables -t nat -L -nChainPREROUTING(policyACCEPT)target protoptsource destinationDOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPEmatchdst-typeLOCALChainINPUT(policyACCEPT)target protoptsource destinationChainOUTPUT(policyACCEPT)target protoptsource destinationDOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPEmatchdst-typeLOCALChainPOSTROUTING(policyACCEPT)target protoptsource destinationMASQUERADE all -- 172.17.0.0/16 0.0.0.0/0MASQUERADE all -- 172.17.0.0/16 !172.17.0.0/16MASQUERADE tcp -- 172.17.0.1 172.17.0.1 tcpdpt:9200ChainDOCKER(2references)target protoptsource destinationDNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcpdpt:9200to:172.17.0.1:9200
需要注意的是,docker run創(chuàng)建一個容器的時候,一定要把他的網(wǎng)卡模式改成docker的none… 一般在docker自定義網(wǎng)絡(luò)的時候,都會把 主站蜘蛛池模板: 偏关县| 南阳市| 鹤山市| 鄱阳县| 固原市| 吴江市| 静宁县| 雷波县| 卫辉市| 汤原县| 常德市| 嘉禾县| 逊克县| 宁明县| 寿阳县| 甘肃省| 东城区| 班玛县| 惠来县| 东乌珠穆沁旗| 泸溪县| 克山县| 开封市| 汾阳市| 馆陶县| 嘉兴市| 固始县| 灌阳县| 陆丰市| 万源市| 安乡县| 营口市| 陵川县| 南开区| 文山县| 安平县| 久治县| 宁强县| 岳池县| 荣成市| 莲花县|