docker - Docker-Compose(如 Vagrant)的私有可寻址 IP
问题描述
问题
我正在使用 Docker-Compose 并想为其中一个容器设置一个可本地寻址的 IP(例如 10.1.1.100)。此 IP 不在我主机的子网中。
流浪风格
在一个类似的 Vagrant 项目中,有一行:
config.vm.network :private_network, ip: "10.1.2.100"
这在那个项目中效果很好。我可以将机器10.1.2.100
作为目标,就好像它是我网络上的可用 IP 一样。我什至不必创建子网。
问题
我一直在寻找如何使用 Docker(特别是 Docker-Compose)设置具有本地可寻址 IP 的容器,但无法使其正常工作。
失败的配置
我已经尝试添加networks
,并分配了一个静态 IP ipv4_address: 10.1.1.100
。可悲的是,整个网络似乎只能通过 Docker 本身访问,而不是通过主机。
如果我尝试使用ports
将 IP 公开为10.1.1.100:80:80
,则会收到此错误:
无法启动服务 SERVICE_NAME:端口不可用:监听 tcp 10.1.1.100:80:绑定:无法分配请求的地址。
但如果我简单地说,这很好用80:80
。所以一定是IP绑定导致了这个问题。
我还尝试network_mode
仅设置此服务,但均未host
正常bridge
工作。
最后,我发现我可以添加driver_opts
:
com.docker.network.bridge.host_binding_ipv4: "10.1.1.100"
这使得无法启动类似于我在使用该ports
方法时收到的相同错误的容器。
解决方案
推荐阅读
- visual-studio - 为 Visual Studio 指定不同的命令提示符
- typescript - 解决 VS 2017 中的“节点定义冲突”TS4090 错误
- flutter - 卡片小部件内的 Listview 未使用列布局显示在屏幕上
- sql - 如何在不使用临时表或视图的情况下在多个列上使用 PIVOT
- jquery - 如何禁用 titlediv_1274837 div 中的所有输入、选择、文本区域
- mariadb - 如何防止 MariaDB 自动完成中间查询?
- html - 如何在传单中制作水平图例?
- php - 如何在 php 中对重音字母进行排序,因为它们没有重音?
- python-3.x - 从 python tkinter 代码创建可执行文件
- google-maps-api-3 - Google Direction API 使用 10 位数字响应 waypoint_order