在docker運(yùn)行容器時(shí)需要指定映射端口,,那如果剛開始沒有考慮的那么周全,,后期遇到需要添加的端口時(shí)該怎么辦呢。 網(wǎng)上常見的方法有兩種: 1.配置防火墻轉(zhuǎn)發(fā)端口,。 2.把docker容器打包成鏡像,,然后以該鏡像為基礎(chǔ)新建一個(gè)容器。
筆者比較中意第二種方法,,然而就在準(zhǔn)備實(shí)施的時(shí)候發(fā)現(xiàn)了更好用的第三種方法,。 (注:該方法不受官方保護(hù),,謹(jǐn)慎使用,,后果自負(fù))
docker容器被創(chuàng)建后會(huì)在服務(wù)器上保存一個(gè)文件夾,,配置文件也放在此處,,解決方法就是找到映射段都得配置文件修改就行了。
- 修改之前先停掉docker
$ systemcel stop docker
- 在 /var/lib/docker/containers/[容器ID]/下找到hostconfig.json
找到映射IP的位置,,復(fù)制一個(gè)已映射的IP,,修改為自己需要的就好(888是我新增的)
"PortBindings": {
"888/tcp": [
{
"HostIp": "",
"HostPort": "888"
}
],
"21/tcp": [
{
"HostIp": "",
"HostPort": "21"
}
]
}
3.相同的目錄下找到config.v2.json 該文件中有兩處需要修改
"ExposedPorts": {
"888/tcp": {},
"21/tcp": {}
}
"Ports": {
"888/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "888"
}
],
"21/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "21"
}
]
}
- 修改完之后啟動(dòng)docker
$ systemctl start docker
- 執(zhí)行成功之后啟動(dòng)容器然后查看容器運(yùn)行狀態(tài)就可以看到新增加的端口在映射關(guān)系里已存在。
- 同理也可以去除端口映射,。
|