簡體   English   中英

獲取java.net.SocketException:無效的參數:在Docker容器內部

[英]getting java.net.SocketException: Invalid argument:inside docker container

我有一個在Docker容器中運行的Java程序。 該程序嘗試連接到Ipv4套接字。 我收到以下無效參數異常

Caused by: java.net.SocketException: Invalid argument: /135.250.15.104:6524
    at sun.nio.ch.Net.connect0(Native Method)
    at sun.nio.ch.Net.connect(Net.java:454)
    at sun.nio.ch.Net.connect(Net.java:446)
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648)
    at io.netty.channel.socket.nio.NioSocketChannel.doConnect(NioSocketChannel.java:209)
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.connect(AbstractNioChannel.java:199)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.connect(DefaultChannelPipeline.java:1089)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:543)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:528)
    at io.netty.handler.ssl.SslHandler.connect(SslHandler.java:415)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:543)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:528)
    at io.netty.channel.ChannelOutboundHandlerAdapter.connect(ChannelOutboundHandlerAdapter.java:47)
    at io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:543)
    at io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:528)
    at io.netty.channel.DefaultChannelPipeline.connect(DefaultChannelPipeline.java:914)
    at io.netty.channel.AbstractChannel.connect(AbstractChannel.java:208)
    at io.netty.bootstrap.Bootstrap$2.run(Bootstrap.java:167)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)

現在,我嘗試設置-Djava.net.preferIPv4Stack=true JVM選項,但是不走運。

我正在使用open-jdk 8,並且from java:openjdk-8u72-jre是我的DockerFile中的條目。 請注意,可以從Docker容器ping相同的IP地址。

當我使用--net=host--net=host run命令中查看--net=host reference並--net=host -compose文件中的network_mode : "host"參見compose reference時,此問題已解決。

另請參閱相關的stackoverflow帖子 僅當套接字連接使用按定義的本地套接字地址而不是讓NIO選擇可用的本地地址時,問題才暴露出來。

但是異常堆棧跟蹤對遠程地址說“無效參數”,這很奇怪,這就是為什么我花一些時間來找出問題所在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM