【发布时间】:2023-03-30 18:12:01
【问题描述】:
我想配置一个网关来连接两个容器。下面是一个示例 compose 文件,它创建了三个容器——一个 test_client、一个 test_server 和一个代理。代理服务器应充当从 test_client 到 test_server 的所有流量的默认网关。我正在使用 compose 文件格式 v2,因为 v3 不支持 IPAM 网关配置。
version: "2"
services:
proxy:
build: .
cap_add:
- NET_ADMIN
expose:
- 8080
- 80
- 443
networks:
client_network:
ipv4_address: '192.168.0.5'
server_network: null
stdin_open: true
tty: true
test_server:
build: ./test_server
expose:
- 8000
networks:
- server_network
test_client:
build: ./test_client
networks:
- client_network
stdin_open: true
tty: true
networks:
client_network:
driver: bridge
ipam:
driver: default
config:
- subnet: "192.168.0.0/24"
gateway: "192.168.0.5"
server_network:
driver: bridge
当我运行docker-compose up 时,我收到以下错误:
ERROR: for 28e458cec9ac_network_proxy_1 b'user specified IP address is supported only when connecting to networks with user configured subnets'
我已阅读以下资源:
SO: docker container as gateway between two docker bridges Docker forums
但他们似乎没有帮助我回答我是如何获得这个设置的。我不致力于任何特定的网络结构 - 我唯一想要的就是配置一个容器充当其他两个容器之间的网络级网关的东西。
【问题讨论】:
-
好吧,我真的不确定这一点,但考虑到你的 docker-compose 文件中唯一的网络是“用户指定的”,因为你明确定义了它,你的问题可能吗?是您正在使用主机网络已使用的子网吗?也许切换到
192.168.5.0/24看看它是否改变了什么? -
遇到了同样的问题。您的 docker-compose 文件对我来说看起来不错。我猜,您尝试在没有子网配置的情况下创建内容,现在 docker 不会将网络配置更新为指定子网的配置...请检查
docker network inspect client_network。如果是这种情况,请不要使用“docker network rm”将其删除,否则您会破坏很多东西(刚刚发现很难),似乎您应该通过docker-compose down删除网络......请参阅:github.com/docker/compose/issues/5745#issuecomment-370031631 (这个没测试过,选错方式了)
标签: docker docker-compose docker-networking