telnet:无法连接到远程主机:尝试连接时拒绝连接 运行 docker 图片

telnet: Unable to connect to remote host: Connection refused when trying to connect running docker image

我在服务器上有 ubuntu 18.04 运行。我在 docker 上有一个 JasperServer 图像 运行。我正在尝试从我的系统访问它。但它会引发以下错误:

jamshaid@jamshaid:~$ telnet my_server_address 9095
Trying my_server_ip...

telnet: Unable to connect to remote host: Connection refused

这是 sudo docker ps -a

的输出
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                           NAMES
69c31ba800ab        bitnami/jasperreports   "/app-entrypoint.sh …"   5 hours ago         Up 5 hours          0.0.0.0:9095->8080/tcp, 0.0.0.0:443->8443/tcp   ceyedev_jasperreports_1
2a7cb72da0c7        bitnami/mariadb:10.3    "/opt/bitnami/script…"   5 hours ago         Up 5 hours          0.0.0.0:3306->3306/tcp                          ceyedev_mariadb_1

如果我在本地主机上远程登录,它会连接然后连接关闭,这意味着它 运行 很好。 这是我从本地主机远程登录时的输出:

ceyedev@ub18servertiny:~$ telnet localhost 9095
Trying ::1...
Connected to localhost.localdomain.
Escape character is '^]'.
Connection closed by foreign host.

这里是 docker-compose 文件

version: '2'
services:
  mariadb:
    restart: always
    image: 'bitnami/mariadb:10.3'
    environment:
      - MARIADB_USER=bn_jasperreports
      - MARIADB_DATABASE=bitnami_jasperreports
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - 3306:3306      
    volumes:
      - 'mariadb_data:/bitnami'
  jasperreports:
    restart: always
    image: 'bitnami/jasperreports'
    environment:
      - MARIADB_HOST=mariadb
      - MARIADB_PORT_NUMBER=3306
      - JASPERREPORTS_DATABASE_USER=bn_jasperreports
      - JASPERREPORTS_DATABASE_NAME=bitnami_jasperreports
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - '9095:8080'
      - '443:8443'
    volumes:
      - 'jasperreports_data:/bitnami'
    depends_on:
      - mariadb
volumes:
  mariadb_data:
    driver: local
  jasperreports_data:
    driver: local 

这是 sudo docker logs container_id_for_jasper
的输出

我可以从我的本地计算机远程登录其他端口,但这个端口有问题。有任何想法吗?谢谢

根据答案中的项目符号2,我执行了以下命令,发现服务器分配了9095。有什么想法吗?

ceyedev@ub18servertiny:~$ netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     
tcp        0    244 10.0.114.15:22          182.185.223.147:54326   ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:5432                :::*                    LISTEN     
tcp6       0      0 :::443                  :::*                    LISTEN     
tcp6       0      0 :::9095                 :::*                    LISTEN     
tcp6       0      0 :::3306                 :::*                    LISTEN     

根据你的问题,你知道:

  • Docker 容器是 运行
  • Docker 容器正在监听端口 9095
  • 从 Linux 服务器到 docker 容器的 telnet 正在运行
  • 从 Internet 某处的其他客户端远程登录到 docker 容器不工作

我猜您的 Ubuntu 服务器不接受来自 Internet 端口 9095 的传入请求。 可能有很多原因:

  • 您的服务器有防火墙设置,阻止连接
  • 您的服务器没有将端口 9095 发布到 Internet
  • 您的客户端在使用端口 9095 时无法访问互联网

所以我会调查这些方面。
docker 部分似乎没问题,因为 telnet 到本地主机正在运行。

对于到达那里但没有找到解决方案的人:

确保您的 Web 服务器正在侦听 0.0.0.0 以侦听所有接口,包括 docker 到外部网络的桥接器