Docker IPv6协议系列不可用

问题描述

如何在docker容器中使用IPv6? 在尝试绑定IPv6地址时,出现异常:java.net.socketException: Protocol family unavailable

在主机IPv6上正常工作。

我尝试了this,但没有帮助。 我也使用--network host选项。

解决方法

一种选择是在JVM中使用IPv4。

要防止JVM执行此操作,请将以下两个系统属性设置为true:

-Djava.net.preferIPv4Stack=true
-Djava.net.preferIPv4Addresses=true

如果您有运行Java应用程序的Dockerfile,请检查添加

ENV JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"

如果您仍以IPv6为目标,请在那儿看看https://collabnix.com/enabling-ipv6-functionality-for-docker-and-docker-compose/

在启动Java应用之前,请确保验证ipv6是否已启动并正在运行。