docker給已存在的容器添加或修改端口映射


簡述:

這幾天研究了一下docker, 發現建立完一個容器后不能增加端口映射了,因為 docker run -p-p 參數,但是 docker start 沒有 -p 參數,讓我很苦惱,無奈谷歌了一番,終於讓我找到了解決辦法

解決辦法:

一種是將原來的容器提交成鏡像,然后利用新的建立的鏡像重新建立一個帶有端口映射的容器,不推薦這種辦法
另一種就是改容器配置文件(也是我推薦的解決辦法):配置文件在 /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json 還有 config.v2.json 這倆文件
hash_of_the_container 可以通過 docker inspect 容器名字 來查看
在這里插入圖片描述

id 就是 容器的 hash 數值,在 hostconfig.json 里有 "PortBindings":{} 這個配置項,可以改成 "PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8080"}]} 這里 80 是容器端口, 8080 是本地端口, 然后在 config.v2.json 里面添加一個配置項 "ExposedPorts":{"80/tcp":{}} , 將這個配置項添加到 "Tty": true, 前面,我不知道添加到別的地方會不會有影響,因為經過對比正常的端口映射配置項是在這個位置,這個就是將容器內部端口暴露出來,如果不加這一句端口映射不會成功的,最后重啟 docker的守護進程 service docker restart
這里有個問題就是重啟后 用docker ps -a 是看不到端口映射的,但實際已經映射好了,我正常在新建一個帶有端口映射容器的時候,重啟 docker的守護進程,端口映射也不會顯示出來,但是通過docker inspect 容器名 可以看到配置項已經修改成功了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM