前言: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...