【发布时间】:2019-06-11 22:22:44
【问题描述】:
我使用docker 和docker-compose 来部署和运行在端口5555 上运行的Java 应用程序。
我以docker-compose -f docker-compose.yml up -d 运行它
但是,如果我在运行 docker 容器的服务器之外运行 telnet 命令,我会收到 Connection refused 消息。如果在服务器内部运行它一切都很好。
所以这些东西被检查了:
$: docker-compose ps
$: ufw 状态
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
5555/tcp ALLOW Anywhere
5432 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
5555/tcp (v6) ALLOW Anywhere (v6)
5432 (v6) ALLOW Anywhere (v6)
docker-compose.yml
version: '3'
services:
db:
container_name: db
image: postgres
restart: always
ports:
- 5432:5432
auth:
container_name: auth
image: registryimg
restart: always
stdin_open: true
tty: true
ports:
- 5555:5555
Dockerfile
FROM openjdk:8-jre
ADD target/auth.jar app.jar
EXPOSE 5555
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
更新 1
从我的容器的 docker 日志中,我发现应用程序正确绑定到所需的端口:
2019-01-18 10:18:11.481 DEBUG 1 --- [ntLoopGroup-2-1] io.netty.handler.logging.LoggingHandler : [id: 0xaf27337e] REGISTERED
2019-01-18 10:18:11.485 DEBUG 1 --- [ntLoopGroup-2-1] io.netty.handler.logging.LoggingHandler : [id: 0xaf27337e] BIND: localhost/127.0.0.1:5555
2019-01-18 10:18:11.489 DEBUG 1 --- [ntLoopGroup-2-1] io.netty.handler.logging.LoggingHandler : [id: 0xaf27337e, L:/127.0.0.1:5555] ACTIVE
更新 2
在我的家用电脑上运行 telnet 命令telnet myhost 5555 并收到错误消息:
Trying myhost...
telnet: Unable to connect to remote host: Connection refused
完成后,我查看我的容器日志,它们是空的(netty 没有注册任何连接)。
否则我想指出,如果我 telnet 另一个装有 potgresql 的容器 - 一切正常。
【问题讨论】:
-
你是用 docker-machine 创建服务器的吗?你的服务器有防火墙吗?它是否在 :5555 允许交通?
-
您是否使用正确的凭据进行身份验证?
-
@maxm 我使用 gitlab ci 创建它。是的,我有一个防火墙,我已经附加了它的信息,显示 tcp 端口 5555 已打开。
-
@UlrichZendler 我不需要进行身份验证,必须为所有传入请求打开端口
-
@nllsdfc 但如果您尝试访问数据库或该容器内的其他内容,则可能会收到该数据库的连接被拒绝错误。您确定错误发生在您连接到容器的行中吗?
标签: docker docker-compose connection-refused