Docker 如何動態修改容器埠對映

2022-07-07 08:51:11 字數 1091 閱讀 6992

前言:docker埠對映往往是docker run命令時通過-p將容器內部埠對映到宿主機的指定埠上,一般來說容器的埠所對應的埠是提前確定需要對映的。但是有些情況下不得不需要臨時對映埠,例如docker中執行著mysql容器,預設埠是不開放的。那麼有什麼辦法可以讓執行中的容器暴露指定的埠呢?客官請往下看--->

通過修改docker的配置檔案來達到我們的目的,一般來說需要修改以下的檔案config.v2.json和hostconfig.json。預設路徑是/var/lib/docker/containers/《容器名稱》

首先通過systemctl stop docker關閉docker服務,其次修改config.v2.json檔案的exposedports配置資訊新增容器內部埠例如"8080/tcp":{},然後修改hostconfig.json中的portbindings配置資訊如下文所示。

完成以上配置後systemctl restart docker重啟docker服務,並且重啟指定容器就可訪問對應的埠。(該方法會有風險不推薦頻繁使用)

"config": ,

"8080/tcp": {}

},s...

},"portbindings":

],"8080/tcp":[

]},

docker的網路埠對映原理是通過iptables實現埠**,基於這個原理我們可以直接使用iptables將埠**到目標容器ip上。通過以下的命令即可實現埠**。該方式依賴於iptables的規則,部分場景下可能會導致iptables的規則衝突從而影響容器的有效啟動。

# 埠對映

iptables -t nat -a docker -p tcp --dport 《容器外部埠》 -j dnat --to-destination 《容器ip>:《容器內部埠》

# 取消埠對映規則

iptables -t nat -d docker -p tcp -d 0/0 --dport 《容器外部埠》 -j dnat --to-destination 《容器ip>:《容器內部埠》

Docker 如何動態修改容器埠對映

前言 docker埠對映往往是docker run命令時通過 p將容器內部埠對映到宿主機的指定埠上,一般來說容器的埠所對應的埠是提前確定需要對映的。但是有些情況下不得不需要臨時對映埠,例如docker中執行著mysql容器,預設埠是不開放的。那麼有什麼辦法可以讓執行中的容器暴露指定的埠呢?客官請往下...

Docker容器如何修改hosts

參考文章 docker修改hosts hosts檔案其實並不是儲存在docker映象中的,etc hosts,etc resolv.conf和 etc hostname,是存在主機上的 var lib docker containers docker id 目錄下,容器啟動時是通過mount將這些檔...

Docker容器 如何修改容器時間,時區問題修改

在進行操作的時候,我們先確定下時間錯誤是什麼引起的,是時間錯誤,還是時區問題 如果只是單純的時間異常,可以直接使用docker exec it u root 24795ac94ae7 bin sh 進入自己的容器進行修改就行了 注 要加 u root 不然許可權會不足,會提示permission d...