【问题标题】:Zookeeper in DockerDocker 中的动物园管理员
【发布时间】:2017-11-07 20:47:29
【问题描述】:

我在 Windows 7 机器上的 docker 容器中运行 zookeeper。我使用 docker-compose 并定义了 端口:['2181:2181'] 里面的映射。 docker 终端向我展示了正在运行的 zookeeper 实例: b3169443e7ee confluentinc/cp-zookeeper:3.3.0 2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp zookeeper

但是当我在 Windows 终端中执行 netstat -an 时,我没有看到 2181 端口打开。我也无法在 localhost 端口 2181 上使用 putty telnet 连接到 zookeeper。可能是什么问题?据我了解,zookeeper 端口不会暴露给主机。但它们应该是因为我在 docker-compose .yaml 文件中包含了端口映射。

【问题讨论】:

    标签: docker docker-compose apache-zookeeper


    【解决方案1】:

    这是 Windows 上 localhost 的一个已知问题。您需要使用容器 IP 地址。你可以通过运行命令找到它

    docker inspect --format '{{ .NetworkSettings.Networks.nat.IPAddress }}' <container>
    

    更多信息请查看:https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/

    【讨论】:

    • 好的,我使用 .NetworkSettings.Networks..IPAddress 过滤器检索了 IP 地址。地址是 172.18.0.2。但是尝试 telnet 也会导致失败:-(
    【解决方案2】:

    好的,终于找到原因了。由于在 Windows 7 上,您必须在运行 linux 系统的虚拟机中运行 docker 容器,因此 docker 容器将虚拟机系统视为其主机,而不是原来的 Windows 7 机器。因此,guest-to-host 端口映射将 docker 容器的端口 2181 映射到虚拟盒中 linux 系统的 2181 端口,而不是映射到“真实”Windows 7 主机的 2181 端口。因此,为了连接到 Zookeeper,我必须使用检索虚拟机的 IP docker-machine ls 然后连接到该 IP 上的 2181 端口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      相关资源
      最近更新 更多