如何動態新增執行中的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服務。





留言

這個網誌中的熱門文章

如何關閉nouveau-kernel-driver,解決無法安裝Nvidia driver問題

如何在Nginx所設置的Proxy中可以取得真實客戶的IP位址

如何客製VMware ESXi安裝光碟(加入Realtek驅動程式)