1. 程式人生 > 其它 >【docker】docker給已存在的容器追加埠號

【docker】docker給已存在的容器追加埠號

1、如題:因為測試docker只開發了80埠,現在想開啟8090埠

2、解決:

參考一:https://www.cnblogs.com/Hellowshuo/p/13893436.html

參考二:https://blog.csdn.net/u012760564/article/details/107866726

簡述:
這幾天研究了一下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 容器名 可以看到配置項已經修改成功了。