docker如何給已存在的容器添加或修改端口映射
簡述
這幾天研究了一下docker, 發(fā)現(xiàn)建立完一個(gè)容器后不能增加端口映射了,
因?yàn)?docker run -p
有 -p
參數(shù)
但是 docker start
沒有 -p
參數(shù)
讓我很苦惱,無奈谷歌了一番,終于讓我找到了解決辦法
解決辦法
一種是將原來的容器提交成鏡像,然后利用新的建立的鏡像重新建立一個(gè)帶有端口映射的容器,不推薦這種辦法
另一種就是改容器配置文件(也是我推薦的解決辦法):
配置文件在
/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json
還有
config.v2.json
這倆文件
hash_of_the_container 可以通過 docker inspect 容器名字
來查看
id 就是 容器的 hash 數(shù)值,在 hostconfig.json
里有 "PortBindings":{}
這個(gè)配置項(xiàng),
可以改成
"PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8080"}]}
這里 80 是容器端口,
8080 是本地端口, 然后在 config.v2.json
里面添加一個(gè)配置項(xiàng) "ExposedPorts":{"80/tcp":{}} ,
將這個(gè)配置項(xiàng)添加到 "Tty": true,
前面,
我不知道添加到別的地方會不會有影響,因?yàn)榻?jīng)過對比正常的端口映射配置項(xiàng)是在這個(gè)位置,
這個(gè)就是將容器內(nèi)部端口暴露出來,如果不加這一句端口映射不會成功的,
最后重啟 docker的守護(hù)進(jìn)程 service docker restart
這里有個(gè)問題就是重啟后 用docker ps -a
是看不到端口映射的,但實(shí)際已經(jīng)映射好了
我正常在新建一個(gè)帶有端口映射容器的時(shí)候,重啟 docker的守護(hù)進(jìn)程,
端口映射也不會顯示出來,但是通過docker inspect 容器名
可以看到配置項(xiàng)已經(jīng)修改成功了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker安裝Jenkins的實(shí)現(xiàn)步驟
版本與jdk版本以及各類插件有對應(yīng)關(guān)系,所以普通安裝較為麻煩,本文主要介紹了Docker安裝Jenkins的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01修改Docker鏡像默認(rèn)存儲位置的方法(解決方法)
這篇文章主要介紹了修改Docker鏡像默認(rèn)存儲位置的方法,如果上面運(yùn)行 Docker 服務(wù),經(jīng)過長時(shí)間的使用,會使原本就比較大的分區(qū)越來越不夠用。如何更好地的處理這個(gè)問題呢,本文給出解決方案,需要的朋友一起看看吧2021-04-04docker安裝nginx實(shí)現(xiàn)對springboot項(xiàng)目的負(fù)載均衡的操作方法
這篇文章主要介紹了docker安裝nginx實(shí)現(xiàn)對springboot項(xiàng)目的負(fù)載均衡的操作方法,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06Docker Cloud實(shí)現(xiàn)部署應(yīng)用操作詳解
這篇文章主要介紹了Docker Cloud實(shí)現(xiàn)部署應(yīng)用操作,較為詳細(xì)的分析了Docker Cloud部署應(yīng)用的步驟、命令、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-06-06