问题描述
如何在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是否已启动并正在运行。