如何動態新增執行中的docker container對外的port
How to expose port on a running container?
如果你已經建立了一個docker container,並且成功運行中,但需要臨時增加對外的port這時候又不想將container停下來的時候,可以直接修改docker host的網路設定達到此目的。
注意:以下提供的修改方法,並不會影響container本身的設定,當docker host或是docer 重新啟動後,設定值就會還原。
假設你開啟了一個Web server的container但卻忘記要開啟 HTTP port,這時候除了透過 docker commit方式還可以動態新增對外的port,可以參照下列的步驟。
這邊的實作是針對運行在Linux上的docker所建立出的container來示範。
Step 1:
取得目標container的IP位址
# docker inspect <your container name>
(假設你的container的IP是172.18.0.3)
Step 2:
設定iptables
# iptables -t nat -A DOCKER -p tcp --dport 80 -j DNAT --to-destination 172.18.0.3:80
# iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source 172.18.0.3 --destination 172.18.0.3 --dport 80
#iptables -A DOCKER -j ACCEPT -p tcp --destination 172.18.0.3 --dport 80
Step 3:
進行HTTP連線測試,觀察是否可以連到該container的Web服務。
如果你已經建立了一個docker container,並且成功運行中,但需要臨時增加對外的port這時候又不想將container停下來的時候,可以直接修改docker host的網路設定達到此目的。
注意:以下提供的修改方法,並不會影響container本身的設定,當docker host或是docer 重新啟動後,設定值就會還原。
假設你開啟了一個Web server的container但卻忘記要開啟 HTTP port,這時候除了透過 docker commit方式還可以動態新增對外的port,可以參照下列的步驟。
這邊的實作是針對運行在Linux上的docker所建立出的container來示範。
Step 1:
取得目標container的IP位址
# docker inspect <your container name>
(假設你的container的IP是172.18.0.3)
Step 2:
設定iptables
# iptables -t nat -A DOCKER -p tcp --dport 80 -j DNAT --to-destination 172.18.0.3:80
# iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source 172.18.0.3 --destination 172.18.0.3 --dport 80
#iptables -A DOCKER -j ACCEPT -p tcp --destination 172.18.0.3 --dport 80
Step 3:
進行HTTP連線測試,觀察是否可以連到該container的Web服務。
留言
張貼留言