docker如何给已存在的容器添加或修改端口映射

2024-03-01 0 814
目录
  • 简述
  • 解决办法
  • 总结

简述

这几天研究了一下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 容器名字 来查看

docker如何给已存在的容器添加或修改端口映射

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 容器名 可以看到配置项已经修改成功了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Linux服务器 docker如何给已存在的容器添加或修改端口映射 https://www.u-9.cn/server/linux/175607.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务