2016-05-17 77 views
0

我有一个运行在码头容器内的java程序。 该程序尝试连接到Ipv4套接字。 我得到以下无效参数异常获取java.net.SocketException:无效的参数:在码头容器内

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中的条目。 请注意,相同的IP地址是可以从泊坞窗容器ping通的。当我用--net=host在我的搬运工,撰写文件,看在我的搬运工运行命令docker referencenetwork_mode : "host"看到compose reference

回答

0

的问题得到解决。

另请参阅stackoverflow post。 只有当套接字连接使用每个定义的本地套接字地址而不是让NIO选择一个空闲本地地址时,问题似乎才暴露出来。

但异常堆栈跟踪说远程地址的“无效参数”这种类型是奇怪的,这就是为什么我花时间找出问题。