1. 程式人生 > 實用技巧 >docker容器啟動後怎麼修改埠對映

docker容器啟動後怎麼修改埠對映

docker容器啟動後怎麼修改埠對映?在docker run建立並執行容器的時候,可以通過-p指定埠對映規則。但是,也會遇到剛開始忘記設定埠對映或者設定錯了需要修改的情況。當docker start執行容器後,並沒有提供一個-p選項或設定,讓你修改指定埠對映規則。

通常間接的辦法是,儲存映象,再建立一個新的容器,在建立時指定新的埠對映。

方法一:刪除原有容器,重新建新容器

這個解決方案最為簡單,把原來的容器刪掉,重新建一個。當然這次不要忘記加上埠對映。優點是簡單快捷,在測試環境使用較多。缺點是如果是資料庫映象,那重新建一個又要重新配置一次,就比較麻煩了。

方法二:利用docker commit新構映象

docker commit:把一個容器的檔案改動和配置資訊commit到一個新的映象。這個在測試的時候會非常有用,把容器所有的檔案改動和配置資訊匯入成一個新的docker映象,然後用這個新的映象重起一個容器,這對之前的容器不會有任何影響。

1、停止docker容器

docker stop container01

2、commit該docker容器

docker commit container01 new_image:tag

3、用前一步新生成的映象重新起一個容器

docker run --name container02 -p 80:80 new_image:tag

這種方式的優點是不會影響統一宿主機上的其他容器,缺點是管理起來顯得比較亂。

方法三:修改檔案埠,重啟docker服務

1、停止容器(docker stop d00254ce3af7)

2、停止docker服務(systemctl stop docker)

3、修改這個容器的hostconfig.json檔案中的埠(如果config.v2.json裡面也記錄了埠,也要修改)

cd /var/lib/docker/containers/d00254ce3af7* #這裡是CONTAINER ID

vim hostconfig.json
如果之前沒有埠對映, 應該有這樣的一段:
"PortBindings":{}

增加一個對映, 這樣寫:
"PortBindings":{"8080/tcp
":[{"HostIp":"","HostPort":"60000"}]} 前一個數字是容器埠, 後一個是宿主機埠。將宿主機的60000埠對映到容器的8080埠 而修改現有埠對映更簡單, 把埠號改掉就行。

4、啟動docker服務(systemctl start docker)

5、啟動容器(docker start d00254ce3af7)