Docker容器修改端口映射


對於已經建立的docker容器,需要新增容器對主機的端口映射,主要分為三種:
 
一:通過修改配置文件修改docker容器端口映射
1.找到要修改容器的CONTAINER ID
docker ps -a
2.進入該容器目錄
docker inspect【CONTAINER ID】| grep Id cd /var/lib/docker/containerid
3.停止容器
docker stop [容器id]
4.停止主機docker服務
systemctl stop docker
5.進入2得到的文件夾內,修改hostconfig.json 和 config.v2.json
vi hostconfig.json 比如新增一個 80 端口,在PortBindings下邊添加以下內容,端口配置之間用英文字符逗號隔開
"80/tcp": [
{
"HostIp": "0.0.0.0", "HostPort": "80"
}
]
接着修改vi config.v2.json, 找到ExposedPorts和Ports 仿照之前內容添加端口映射
"ExposedPorts": {
"2000/tcp": {}
},
"Ports":
{ "2000/tcp":[
{
"HostIp": "0.0.0.0", "HostPort": "2000"
}
]
},
5.保存之后重啟docker服務和容器
systemctl start docker 
docker start [docker id]
二:把運行中的容器生成新的鏡像,再新建容器
1.提交一個運行中的容器為鏡像
docker commit [containerid] [new_imagename]
2.運行新建的鏡像並添加端口映射
docker run -d -p 8000:80 [imagename] /bin/sh
三:修改主機iptables端口映射
docker的端口映射並不是在docker技術中實現的,而是通過宿主機的iptables來實現。通過控制網橋來做端口映射,類似路由器中設置路由端口映射。
如果我們有一個容器的8000端口映射到主機的9000端口,先查看iptabes設置了什么規則:
sudo iptables -t nat -vnL
結果中有一條:
Chain DOCKER (2 references)
pkts bytes target prot opt in out source destination
98 5872 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0
237 14316 DNAT tcp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9000 to:172.17.0.3:8000
我們可以看到docker創建了一個名為DOKCER的自定義的鏈條Chain。而我開放8000端口的容器的ip是172.17.0.3。
也可以通過inspect命令查看容器ip
docker inspect [containerId] |grep IPAddress
我們想再增加一個端口映射,比如8081->81,就在這個鏈條是再加一條規則:
sudo iptables -t nat -A DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.3:81
加錯了或者想修改:先顯示行號查看
sudo iptables -t nat -vnL DOCKER --line-number
刪除規則3
sudo iptables -t nat -D DOCKER 3
 


免責聲明!

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



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