docker - Docker内部网络和要连接的外部系统在同一范围内,即172.160.0.0/16
问题描述
在我当前的应用程序中,容器使用 172.16.0.0/16 网络与主机中的其他容器连接。现在我们需要连接到 IP 地址为 172.16.2.2 的外部系统
在尝试连接/ping 到这个 IP 172.16.2.2 时,它被阻止说没有到主机的路由。
所以我的理解是,在 255.255.0.0 的 genmask 下 172.16.0.0 中的任何东西都不会脱离外部接口。
解决此问题的最简单方法是什么,或者我是否需要更改我的内部 docker 网络以使用 192.168.0.0/16 范围
解决方案
您将需要更改内部 docker 网络。或者,如果您使用的是 docker-compose,您可以使用不同的子网更改默认的 docker 网络。
networks:
default:
ipam:
config:
- subnet: 172.20.0.0/16
对于内部 docker 网络,您可以通过在/etc/docker/daemon.json
(在 linux 上)文件中设置参数来配置默认桥接网络,如下所示:
{
"bip": "192.168.1.5/24",
"fixed-cidr": "192.168.1.5/25",
"fixed-cidr-v6": "2001:db8::/64",
"mtu": 1500,
"default-gateway": "10.20.1.1",
"default-gateway-v6": "2001:db8:abcd::89",
"dns": ["10.20.1.2","10.20.1.3"]
}
参考:https ://docs.docker.com/network/bridge/#configure-the-default-bridge-network
这里的答案相同:如何配置 docker 以避免特定地址或子网?
推荐阅读
- bootstrap-4 - 引导程序:当我单击 x 按钮时引导程序警报未关闭
- python - 如何在函数中找到最优值以获得最佳结果?
- javascript - 如何限制所有用户的laravel路由并且只能由应用程序访问
- c++ - 单独的线程以防止进度条在 C++ 中“冻结”
- r - Rstan 中是否有暂停功能
- python - 是否可以在不使用 studio 5000 的情况下使用 python 对 powerflex 527 进行编程?
- django - 如何在 Django 中检查 `--keepdb` 标志
- linux - Systemd没有激活服务?
- graph - 图表没有出现 google colab
- c++ - Netbeans 中的 C++ 和 SFML,运行时错误仅通过 IDE 运行