docker - 无法从远程机器访问 Docker 容器
问题描述
我使用docker
anddocker-compose
来部署和运行在端口 5555 上运行的 java 应用程序。
我运行它 docker-compose -f docker-compose.yml up -d
但是,如果我在运行 docker 容器的服务器之外运行 telnet 命令,我会收到Connection refused
消息。如果在服务器内运行它一切都很好。
所以检查了这些东西:
$: 码头工人撰写 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)
码头工人-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 - 一切都很好。
解决方案
好吧,答案是想想你绑定的是什么主机。
在我的情况下,netty 服务器绑定如下:
BIND: localhost/127.0.0.1:5555
我已将其更改为:
BIND: 0.0.0.0/0.0.0.0:5555
它就像一个魅力!
推荐阅读
- r - 绘制 3D 散点图以读取 2D
- xpath - 用于获取缺少单元格图像的表格行的 xpath
- jquery-ui - Jquery Sortable Draggable or Droppable Multiple Lists to one List and Revert
- angular - 角垫按钮,如何禁用焦点覆盖
- spring-webclient - 取消信号(关闭连接)可能是什么原因?
- json - 在 if/then [json] 中将 ref 路径添加到 required
- python - 使用 for 循环获取 django 查询集上唯一值的 COUNT
- mysql - 在 SQL 中使用 DATEPART()
- spark-ar-studio - 在 SparkAR 中将 facemesh 约束为 3D 对象
- c++ - 使用自动关键字记录我想要的任何内容