docker - Docker-Compose-服务器公开了多个端口,但是客户端中只有一个端口不可访问

标签 docker docker-compose

Docker的新手。

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

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

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

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

我什至可以看到该端口正在从主机运行(在主机上,我可以运行nc -zv localhost 8020-> success [请注意,因为端口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。

最佳答案

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

  • 在主机上使用:telnet 172.17.42.1 8020以确保在主机上打开端口8020。
  • 在docker服务器容器:telnet 127.0.0.1 8020中,确保在Docker容器中打开端口8020。
  • 检查主机上的防火墙(如果使用Linux计算机,则为iptables -L)。
  • 确保在主机中,端口8020上没有正在监听的服务。
  • 关于docker - Docker-Compose-服务器公开了多个端口,但是客户端中只有一个端口不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34489116/

    相关文章:

    c# - 尝试以编程方式运行容器时从 Docker 退出代码 125

    docker - 我可以避免为蓝绿部署重复我的服务定义吗?

    docker - couchbase docker端口8091有301重定向

    docker - docker 可以有多个日志记录驱动程序吗?

    docker - docker stack deploy (compose) 中有哪些 Docker 模板值可用?

    bash - Docker 构建无法从 Dockerfile 中使用的 bash 脚本中的 archive.ubuntu.com 获取包

    docker - 如何在 Docker 容器中加速 Node.js React 启动

    python - 在没有docker的情况下运行正常时拒绝使用docker连接本地ip地址

    mysql - "Host ' 192.XXX.XXX.X ' is not allowed to connect to this MySQL server"尝试从另一个容器访问 mysql Docker 容器时出错

    ssl - 执行docker-compose up时抛出错误说docker-compose up handshake operation timed out