【问题标题】:Docker IPv6 Protocol family unavailableDocker IPv6 协议系列不可用
【发布时间】:2020-09-17 21:08:55
【问题描述】:

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

在主机 IPv6 上正常工作。

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

【问题讨论】:

  • 呼叫是否来自 docker 外部或 docker 正在尝试调用其他外部服务或其他 docker 机器?
  • @TraychoIvanov 尝试调用例如 google.com [2a00:1450:401b:807::200e]。但它甚至没有达到这一点。因为我在 bind(SocketAddress bindpoint) 方法上遇到了异常。

标签: java docker ipv6


【解决方案1】:

一种选择是在您的 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 已启动并正在运行。

【讨论】:

  • 我绝对需要 IPv6。
  • @KopeMorta 有更新,带有更多详细信息的额外链接。
  • 我已经尝试编辑/etc/docker/daemon.json 文件。这将 ipv6 地址添加到 docker0 接口,但我仍然有同样的异常。我也使用主机网络,为什么我有这个例外?如果我遇到 IPv6 配置不正确的问题,还会出现其他错误。这是某种禁止使用这些地址的错误。当然,网络配置正确,因为没有 docker 一切正常。
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多