由于以下原因,docker-compose
不喜欢以下配置中gogs容器的地址203.0.113.1
。请注意,在下面的示例中,我在203.0.113.3
上运行了Gogs,但运行正常,但是如果将其更改为203.0.113.1
,则会显示以下消息:
错误:对于f1d322793d47_docker_gogs_1无法启动服务gos:地址已在使用中。
我已经检查以确保没有使用IP地址203.0.113.1
的容器正在运行,所以我很好奇docker-compose
是否只是出于某种原因而不允许使用该地址?
version: '3'
services:
gogs-nginx:
build: ./nginx
ports:
- "80:80"
networks:
mk1net:
ipv4_address: 203.0.113.2
gogs:
image: gogs/gogs
ports:
- "3000:3000"
volumes:
- gogs-data:/data
depends_on:
- gogs-nginx
networks:
mk1net:
ipv4_address: 203.0.113.3
volumes:
gogs-data:
external: true
networks:
mk1net:
ipam:
config:
- subnet: 203.0.113.0/24
答案 0 :(得分:3)
在网络中,通常为特定任务保留三个IP。
0用作网络地址。 1用作Gateway地址,而255用作广播地址。
如果一个容器要与同一网络中的另一个容器通信,则可以直接与他交谈。当他想与网络外的其他IP对话时,他将请求发送到网关地址,并希望网关知道如何路由该地址。
要查看此信息,您可以检查Docker容器并检查其IPAddress附近的Gateway属性。
或使用ifconfig(Linux)并搜索具有与您创建的ID相同的ID的网络。该网络的IP为203.0.113.1
因此您的IP已被网络网关使用。
在docker compose版本2中,有一个config用于更改网关和广播ip。
对于版本3,似乎目前不支持config。