为什么安装 Docker 后默认 IPv6 地址发生变化以及如何避免这种情况
Why is the default IPv6 address changed after installing Docker and how to avoid it
我正在使用 Ansible 在 Debian 系统上安装 Docker。我需要在某些任务中识别 ansible_default_ipv6.address
。安装 Docker 后,安装任务 returns 一个不同的 "default" (docker0 接口)而不是 "eth0" 或 "ens18" 或其他。所以这不是 Docker 的真正问题,而是网络接口的变化。如果您配置 OpenVPN 等,可能会发生这种情况。
我不明白,为什么 ansible_default_ipv6.address
变了(可能是因为 "d" 早于 "e")。我希望 "scope global" 比 docker0
中的 "scope global tentative" 更重要
而且 - 我怎样才能避免这种行为?定义关于接口或 IP 的每个主机变量是最佳做法吗?
你是对的,这是因为 "d" 在 "e" 之前:
理论上Ansible选择the device with the default gateway作为"default"接口。实际上,通常只是界面在字母表中排在第一位。
所以在安装 docker 之前,eth0
是默认界面,但是在安装 docker 之后有一个新的 docker0
界面(在 eth0
之前当按字母顺序排序时),因此 Ansible 现在将 docker0
声明为 "default" 接口。
解决方案:不要使用ansible_default_ipv6
,而是使用接口特定的事实(ansible_eth0["ipv4"]...
)
我正在使用 Ansible 在 Debian 系统上安装 Docker。我需要在某些任务中识别 ansible_default_ipv6.address
。安装 Docker 后,安装任务 returns 一个不同的 "default" (docker0 接口)而不是 "eth0" 或 "ens18" 或其他。所以这不是 Docker 的真正问题,而是网络接口的变化。如果您配置 OpenVPN 等,可能会发生这种情况。
我不明白,为什么 ansible_default_ipv6.address
变了(可能是因为 "d" 早于 "e")。我希望 "scope global" 比 docker0
而且 - 我怎样才能避免这种行为?定义关于接口或 IP 的每个主机变量是最佳做法吗?
你是对的,这是因为 "d" 在 "e" 之前:
理论上Ansible选择the device with the default gateway作为"default"接口。实际上,通常只是界面在字母表中排在第一位。
所以在安装 docker 之前,eth0
是默认界面,但是在安装 docker 之后有一个新的 docker0
界面(在 eth0
之前当按字母顺序排序时),因此 Ansible 现在将 docker0
声明为 "default" 接口。
解决方案:不要使用ansible_default_ipv6
,而是使用接口特定的事实(ansible_eth0["ipv4"]...
)