【docker】docker给已存在的容器追加端口号
1、如题:因为测试docker只开发了80端口,现在想打开8090端口
2、解决:
参考一:https://www.cnblogs.com/Hellowshuo/p/13893436.html
参考二:https://blog.csdn.net/u012760564/article/details/107866726
简述: 这几天研究了一下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 容器名字 来查看 在这里插入图片描述 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 容器名 可以看到配置项已经修改成功了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决