Docker-Compose - 服务器公开了几个端口,但客户端中只能访问其中一个端口

时间:2015-12-28 07:08:59

标签: docker docker-compose

Docker的新功能。

我有2个容器,我通过docker-compose链接。我们称之为服务器&客户。服务器公开了几个端口。

当我执行docker-compose up并通过docker exec访问客户端时,我可以访问除1之外的所有端口。

此特定端口是IPC端口(据我所知它是基于tcp的。)

当我通过docker exec访问服务器时,我看到端口已启动且正在运行且基础服务正在侦听并响应来自端口的请求。

我甚至可以看到端口是从主机运行的(在主机上我可以运行nc -zv localhost 8020 - >成功[请注意,因为端口8020正在映射到8020我可以使用localhost 8020])。

client
 image: my/client
 links: 
  - server

server:
 image: my/server
 ports:
  - "8020:8020" 
  - "50070:50070"
  - "50075:50075"
  - "50030:50030"
 expose:
  - "8020"
  - "50070"
  - "50075"
  - "50030"

我唯一无法访问的端口是8020.在客户端执行nmap时,我得到:

[root@ecc57bcc52b7 /]# nmap -p 8020 server

Starting Nmap 6.40 ( http://nmap.org ) at 2015-12-28 07:03 UTC
Nmap scan report for server (172.17.0.187)
Host is up (0.000058s latency).
rDNS record for 172.17.0.187: server
PORT     STATE  SERVICE
8020/tcp closed unknown
MAC Address: 02:42:AC:11:00:BB (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

但所有其他端口报告为开放。

重申一下,我100%确定服务器中正在侦听端口8020。

1 个答案:

答案 0 :(得分:0)

有一些方法可以检查这些问题:

  1. 在主机上使用:telnet 172.17.42.1 8020以确保主机上的端口8020已打开。
  2. 在泊坞窗服务器容器中:telnet 127.0.0.1 8020,确保端口8020在泊坞窗容器中已打开。
  3. 检查主机上的防火墙(iptables -L,如果你正在使用Linux机器)。
  4. 确保在主机中,没有正在侦听端口8020的服务。