亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker容器啟動后添加端口映射

發布時間:2020-09-13 00:28:52 來源:腳本之家 閱讀:364 作者:患恐高癥的小鳥 欄目:服務器

概要

網上有許多人在查找關于容器啟動后能否進行端口映射的問題。我曾經也問過度娘,很遺憾我沒找到。本文就這個問題給出一個解決方法,旨在拋磚引玉。本文的思路是使用iptables的端口轉發,這也是docker端口映射內部的實現機制,只不過我是顯示地寫出來罷了,為的就是讓查找這個問題的人對docker的端口映射有一個直觀的了解。

結論:容器啟動后是可以添加端口映射的,但不建議手工添加,最好使用docker提供的功能。

步驟

創建兩個容器并進行了端口映射,結果如圖所示:

docker容器啟動后添加端口映射

假如,我start一個容器,其內部IP為172.17.0.5,并在容器內部啟動了80端口。

FORWARD規則鏈我們不用管它,docker已經幫我們寫好了,我們只需要關心NAT中的幾條鏈即可。

查看NAT表中的PREROUTING鏈

docker容器啟動后添加端口映射

從上面可以看出,iptables將滿足條件的數據都轉發到了DOCKER鏈上去了。

查看NAT表中的DOCKER鏈

docker容器啟動后添加端口映射

仿照上圖,我們添加一條自己的映射規則,將宿主的8082端口映射到172.17.0.5的80端口上去,規則如下:

iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 8082 -j DNAT --to-destination 172.17.0.5:80

查看NAT表中的POSTROUTING鏈

docker容器啟動后添加端口映射

仿照上圖中的規則,書寫的規則如下:

iptables -t nat -A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p tcp -m tcp --dport 80 -j MASQUERADE

查看FILTER表中的DOCKER鏈

docker容器啟動后添加端口映射

仿照上圖書寫規則如下:

 iptables -t filter -A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT

結果

雖然IP為172.17.0.5的容器沒有開啟端口映射,如下圖所示:

docker容器啟動后添加端口映射

但我們依然能夠通過訪問宿主機(192.168.78.238)的8082端口來訪問172.17.0.5的80端口,效果如下:

docker容器啟動后添加端口映射

使用此方法有一個缺點,不能訪問localhost:8082,也就是說如果想對localhost也進行轉發,需要進行額外的配置。

結論

建議大家不要像我這樣去做端口映射,我這么做只是為了闡述標題。

如果大家在容器中添加了一些東西,并開啟了端口,同時呢,又想多復制幾個這樣的容器。建議大家把容器提交成鏡像,然后使用docker提供的端口映射功能。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高雄县| 九龙县| 贵阳市| 荔波县| 贵港市| 牙克石市| 红安县| 固安县| 启东市| 博白县| 黑水县| 菏泽市| 姜堰市| 甘孜| 涿鹿县| 红河县| 顺昌县| 延寿县| 陇川县| 丰镇市| 噶尔县| 涿鹿县| 临清市| 西昌市| 康保县| 襄樊市| 白玉县| 措勤县| 水富县| 美姑县| 新竹县| 营口市| 临汾市| 双城市| 海盐县| 聊城市| 阿巴嘎旗| 广灵县| 高雄县| 上林县| 苍梧县|