docker如何查看宿主机到容器端口映射

docker/Docker如何查看宿主机到容器端口映射关系

背景

前些天的时候, 在定位问题时发现docker emqx 连接websocket (8083)端口出现异常. 经过很长时间定位, 才发现是端口映射出现问题
为什么那么长时间才定位到端口映射方面出现了问题呢要是因为对docker端口映射方面的知识点有所遗忘
为了能帮助你快速理解, 请思考下面的问题:

通过docker ps 查看某容器运行情况如下图, 你觉得该容器的 8083端口可以通过外 访问吗(排除防火墙相关问题)strong>

  • 从上图可以看出, 宿主机的 3307端口绑定到了docker 容器中的3306端口, 0.0.0.0是真正表示 路中的本地.
    因此一开始的: 代表放开docker容器内部8083,8084端口, 但无法通过宿主机访问到这两个端口,
    因为他们之间没有建立端口映射, 下面列举了在 下, 几种端口映射的介绍

  • 方式二(docker inspect)

    1. 因此再根据 查的8083/tcp的子属性为null .
      我们也可以从这里确认没有建立宿主机8083端口->容器8083端口的映射

    如何添加宿主机到端口映射h2>

    上面问题解决了, 但有新的问题出现了.
    那就是: 当发现某些端口没有建立映射时, 我们如何添加这些端口映射关系呢strong>
    你可以直接删除容器, 然后重新配置端口映射后再运行容器. 但如果在不删除容器的情况下. 依旧有两种方式:

    方式一

    第一种方式不做过多解释, 通过修改docker 基础配置文件, 然后重启docker 服务使其生效 传送门

    • 优点: 配置简单
    • 缺点: 需要在配置前关闭docker服务, 配置后再启动, 如果docker上的软件没有设置重启自启也会很麻烦

    方式二

    通过修改路由表的方式来添加端口映射. 本人也是通过这种方式进行动态修改 参考文章

    • 优点: 无需重启docker服务
    • 缺点: 配置较为麻烦

    步骤

    1. 获取当前docker 容器ip, 用于后续配置使用

    2. 如果没有生效, 可以重启下容器


    文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树容器(docker)安装docker8962 人正在系统学习中

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年6月6日
    下一篇 2022年6月6日

    相关推荐