Docker 码头管理员

Docker 码头管理员,docker,docker-compose,apache-zookeeper,Docker,Docker Compose,Apache Zookeeper,我在Windows7机器上的docker容器中运行zookeeper。我使用docker编写并定义 端口:['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端口打开。我也不能在本地主机端口2

我在Windows7机器上的docker容器中运行zookeeper。我使用docker编写并定义 端口:['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端口打开。我也不能在本地主机端口2181上使用putty telnet连接到zookeeper。有什么问题吗?据我所知,zookeeper端口不向主机公开。但是它们应该是,因为我在docker compose.yaml文件中包含了端口映射。

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

docker inspect --format '{{ .NetworkSettings.Networks.nat.IPAddress }}' <container>
docker-inspect——格式为“{.NetworkSettings.Networks.nat.IPAddress}”

查看更多信息:

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

好,我使用.NetworkSettings.Networks..IPAddress筛选器检索了IP地址。地址是172.18.0.2。但尝试使用telnet连接也会导致失败:-(