Docker 中的动物园管理员
Zookeeper in Docker
我 运行 zookeeper 在我的 Windows 7 机器上的 docker 容器中。我使用 docker-compose 并定义了
ports: ['2181:2181'] 里面的映射。 docker 终端显示了 zookeeper 实例 运行ning:
b3169443e7ee confluentinc/cp-zookeeper:3.3.0 2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp 动物园管理员
但是当我在 Windows 终端中执行 netstat -an 时,我没有看到 2181 端口打开。我也无法在本地主机端口 2181 上使用 putty telnet 连接到 zookeeper。可能是什么问题?据我了解,zookeeper 端口没有暴露给主机。但它们应该是因为我在 docker-compose .yaml 文件中包含了端口映射。
这是 windows 上 localhost
的一个已知问题。您需要使用容器 IP 地址。您可以通过 运行 命令
找到它
docker inspect --format '{{ .NetworkSettings.Networks.nat.IPAddress }}' <container>
更多信息请查看:https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/
好的,终于找到原因了。由于在 Windows 7 上你必须 运行 你的 docker 容器在一个虚拟盒子 运行ning 一个 linux 系统中,docker 容器看到virtual box system作为它的宿主,不是原来的Windows7机器。因此,端口映射来宾到主机将 docker 容器的端口 2181 映射到虚拟框中 linux 系统的 2181 端口,而不是 "real" Windows7主机。因此,为了连接到 zookeeper,我必须使用以下命令检索虚拟机的 IP
docker-machine ls
然后连接到该 IP 上的端口 2181。
我 运行 zookeeper 在我的 Windows 7 机器上的 docker 容器中。我使用 docker-compose 并定义了 ports: ['2181:2181'] 里面的映射。 docker 终端显示了 zookeeper 实例 运行ning: b3169443e7ee confluentinc/cp-zookeeper:3.3.0 2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp 动物园管理员
但是当我在 Windows 终端中执行 netstat -an 时,我没有看到 2181 端口打开。我也无法在本地主机端口 2181 上使用 putty telnet 连接到 zookeeper。可能是什么问题?据我了解,zookeeper 端口没有暴露给主机。但它们应该是因为我在 docker-compose .yaml 文件中包含了端口映射。
这是 windows 上 localhost
的一个已知问题。您需要使用容器 IP 地址。您可以通过 运行 命令
docker inspect --format '{{ .NetworkSettings.Networks.nat.IPAddress }}' <container>
更多信息请查看:https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/
好的,终于找到原因了。由于在 Windows 7 上你必须 运行 你的 docker 容器在一个虚拟盒子 运行ning 一个 linux 系统中,docker 容器看到virtual box system作为它的宿主,不是原来的Windows7机器。因此,端口映射来宾到主机将 docker 容器的端口 2181 映射到虚拟框中 linux 系统的 2181 端口,而不是 "real" Windows7主机。因此,为了连接到 zookeeper,我必须使用以下命令检索虚拟机的 IP
docker-machine ls
然后连接到该 IP 上的端口 2181。