java - 无法在 Java 中使用 HttpURLConnection 连接 Docker 容器
问题描述
我在 java 中创建了两个 Web 项目。其中一个项目在 Tomcat docker 容器中运行:
192.160.1.5:8080/SocketServer
另一个项目正在使用 eclipse 在本地机器上运行
localhost:8081/SocketClient
我正在尝试使用 java 中的 HttpURLConnection 从 SocketClient 连接在 docker 容器内运行的 SocketServer 项目。但它给出了一些错误,如下所示:
java.net.ConnectException: Connection refused
at java.base/sun.nio.ch.Net.connect0(Native Method)
at java.base/sun.nio.ch.Net.connect(Net.java:574)
at java.base/sun.nio.ch.Net.connect(Net.java:563)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333)
at java.base/java.net.Socket.connect(Socket.java:648)
at java.base/java.net.Socket.connect(Socket.java:597)
at java.base/java.net.Socket.<init>(Socket.java:520)
at java.base/java.net.Socket.<init>(Socket.java:370)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:80)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:122)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
at com.dump.LogAction.startSocket(LogAction.java:61)
at com.dump.LogAction.execute(LogAction.java:37)
我该如何解决这个问题?
解决方案
这是正常行为,您应该阅读文档。 https://docs.docker.com/network/network-tutorial-host/
--network host
快速回答:使用参数运行 docker 映像,或者您需要公开一个端口https://www.whitesourcesoftware.com/free-developer-tools/blog/docker-expose-port/ --expose 8080
推荐阅读
- callback - ESP8266,客户端通过 Ticker 连接
- unity3d - unity:如何在地形上粘贴 arial 照片?
- ignite - 点燃缓存 TreeMap
- c# - XML 中的不同值
- python - 单击 PushButton 时如何打印多个 QLabel?
- python - 更多主题当代
- django - Django crontab,每 12 小时运行一次作业
- reactjs - 使用 Enzyme & Jest 测试关于状态的 IF 语句不起作用
- laravel-5.6 - 当我将数据从控制器传递到作业时,Laravel 排队问题
- python - /edit/3 处的 ValueError 视图 main_panel.views.edit 未返回 HttpResponse 对象。它返回 None 而不是