我在 docker 中运行了两个容器,它们运行相同的应用程序但在不同的端口上。我们需要 nginx 在它们的端口上代理对这些应用程序的请求。
Nginx 配置为将请求转发到172.18.0.101:8086
和172.18.0.102:8087
。因此,必须为每个容器分配一个 IP。
该应用程序使用 composer 在 docker 中启动。这是它的样子docker-compose.yml
:
version: '2'
services:
my-service-1:
build: ./service-1/
ports:
- "8086:8086"
networks:
my-net:
ipv4_address: 172.18.0.101
my-service-2:
build: ./service-2/
ports:
- "8087:8087"
networks:
my-net:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16
gateway: 172.17.0.1
当我运行命令时,docker-compose up
我得到一个错误:
ERROR: Pool overlaps with other one on this address space
如何修复它并使用这些 IP 地址启动容器,nginx 将在其上进行负载平衡?
我没有得到同样的错误,但我怀疑我知道问题出在哪里。
错误地,我发现了一些技巧,其本质是您需要正确关闭服务,以便可以使用新配置重新创建过时的网络。只是不要忘记在停止后执行:
$ docker-compose down