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 到外部网络的桥接器
我在服务器上有 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 到外部网络的桥接器