【问题标题】:Docker not working with a VPN due to network issues由于网络问题,Docker 无法使用 VPN
【发布时间】:2020-11-25 06:44:09
【问题描述】:

由于某种原因,我的 VPN (NordVPN) 干扰了 Docker:

make start
docker-compose -f docker-compose/docker-compose.base.yml -f docker-compose/docker-compose.dev.yml up -d
doCreating network "docker-compose_default" with the default driver
ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
cmake: *** [Makefile:59: up_dev] Error 1

问题似乎与网络有关。不过,我不确定如何对其进行故障排除或修复。禁用我的 VPN 并运行 sudo systemctl restart docker 后,Docker 工作正常。

环境

  • Ubuntu 20.04 LTS
  • Docker 版本 19.03.8,构建 afacb8b7f0
  • NordVPN 版本 3.7.4

【问题讨论】:

  • 您可能处于为 docker 创建的最大网络数。试试docker network prune,然后再试一次。如果确实是 VPN 的问题,请尝试this
  • 就我而言,docker network prune 解决了 macOS 10.15.2 和 ProtonVPN 1.9.0 的网络问题。 Docker 会在使用 ERROR [internal] load metadata 构建时中断,更准确地说是 failed to solve with frontend dockerfile.v0,因为请求因 Service Unavailable 而失败

标签: docker vpn


【解决方案1】:

TL;DR

这里的问题是docker/docker-compose 无法找到合适的地址范围来为新的内部网络分配子网,因为 VPN 会为所有 IP 地址添加路由。

解决方案:

  1. docker-compose.yml 中手动define the network and its address range 或使用existing one => 需要更改所有docker-compose.yml 文件,由于硬编码地址,这些文件也可能难以移植。
  2. 在 VPN 之前启动 docker/所有服务 => 可能并非在所有情况下都可行
  3. 重新配置您的 VPN 的路由配置以排除 docker 使用的范围 => 会增加您的 VPN 配置的复杂性,如果操作不当,可能会泄漏用于 VPN 的流量

说明

默认为docker-composesets up a dedicated docker network for each project,即docker主机上的虚拟桥接设备。

要将子网范围和网关地址分配给网络docker,会尝试从可能的范围池中选择一个范围。它会检查所选范围是否与已绑定到已连接网络设备的范围/路由重叠,以防止主机使用的地址范围发生冲突。

另一方面,VPN 可能会添加自己的路由,以便通过 VPN 隧道重定向所有流量。因此,docker 将无法找到分配给新网络的“未使用”地址范围。

有关更多信息,请参阅 the answers to this questionrespective issue on GitHub

【讨论】:

    【解决方案2】:

    这对我有用。停止正在运行的容器并尝试

    docker network prune

    注意:慎用

    【讨论】:

    • 它对我有效!谢谢
    猜你喜欢
    • 2018-02-17
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 2016-08-10
    • 2016-02-27
    • 2017-06-24
    相关资源
    最近更新 更多