首页 文章

Docker的Zookeeper

提问于
浏览
1

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

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

2 回答

  • 0

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

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

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

  • 1

    好的,最后我发现了原因 . 因为在Windows 7上你必须在运行linux系统的虚拟盒中运行docker容器,docker容器将虚拟盒系统视为其主机,而不是原始的Windows 7机器 . 因此,端口映射guest-to-host将docker容器的端口2181映射到虚拟框中的linux系统的2181端口,而不映射到"real" Windows 7主机的2181端口 . 因此,为了连接到zookeeper,我必须使用 docker-machine ls 检索虚拟机器的IP,然后连接到该IP上的端口2181 .

相关问题