我正在尝试创建多个 Docker(来自同一个图像)并将它们放在一个子网中,在那里我可以像使用多台机器一样使用它们。
version: "3"
services:
machine001:
container_name: "machine001"
build: .
image: "test-machine"
ports:
- "1337"
- "22"
networks:
net:
ipv4_address: 172.20.1.1
machine002:
container_name: "machine002"
build: .
image: "test-machine"
ports:
- "1337"
- "22"
networks:
net:
ipv4_address: 172.20.1.2
networks:
net:
driver: bridge
ipam:
config:
- subnet: 172.20.1.0/24
然而,在编写时,我收到第一台机器的错误,并收到一条错误消息Address already in use
(第二台机器工作正常),因此通过浏览了一下,我认为该地址可能172.20.1.1
是为网关保留的,于是我尝试更改它,然后另一个问题
services:
# same as before...
networks:
net:
driver: bridge
ipam:
config:
- driver: default
subnet: 172.20.1.0/24
gateway: 172.20.1.254
然而,Compose 不喜欢这样,它说
错误:Compose 文件'./docker-compose.yml' 无效,因为:networks.net.ipam.config 值不允许附加属性('gateway'、'driver' 是意外的)
更改子网网关的正确方法是什么?这样能提供地址吗172.20.1.1
?
答案1
就我个人而言,网关在 docker compose 版本 3 中不起作用,我不得不返回到版本 2,之后一切正常,我使用 docker network inspect network_name 并且现在看到我定义的网关。
所有这些都在 docker-compose 中工作