Docker compose 踩坑 - network
https://pfun.sunrui.ink/forum.php?mod=viewthread&tid=49
(出处: 编程客)
此前使用 docker-compose.yaml 的时候,都没有自己配置 network,最近在部署新的 docker-compose 的时候报了 network overlap 的问题,才知道我的 network 子网不够用了。
问题是这样的,当你的 docker-compose.yaml 未指定 network 的时候,它会自动为你创建一个文件夹名_default 的网络,网络 CIDR 是 172.x.0.0/16。
每次我创建一个未配置 network 的 docker-compose 的时候都会创建一个,于是我的宿主机上就有了一堆这种子网。
172.0.0.0/16
172.1.0.0/16
172.2.0.0/16
...
这样很快就消耗了可用的 CIDR 网段。而且 /16 这样的 CIDR 太大了,可以容纳 65536 个虚拟机,或者说 docker instance。
解决问题的方法也很简单,自己定义网络的 CIDR 确保分配的网段大小不过大,这样就肯定不会有问题。
例如:
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
user: 1000:1000 # should be owner of volumes
ports:
- "4533:4533"
restart: unless-stopped
environment:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: trace
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
networks:
- navidrome
networks:
navidrome:
ipam:
driver: default
config:
- subnet: 172.26.0.40/29
ip_range: 172.26.0.40/29
gateway: 172.26.0.41
上面的代码指定了 subnet 范围是 172.26.0.40/29,可用地址范围 172.26.0.41 - 172.26.0.46,8 个,足够绝大多数 docker-compose.yaml 使用了。
这样可以极大的节约 subnet 地址空间,延缓甚至可以说杜绝地址用尽的到来。毕竟想用完这么多的地址所需要的虚拟机,我们的内存恐怕根本 hold 不住。
https://pfun.sunrui.ink/forum.php?mod=viewthread&tid=49
(出处: 编程客)
此前使用 docker-compose.yaml 的时候,都没有自己配置 network,最近在部署新的 docker-compose 的时候报了 network overlap 的问题,才知道我的 network 子网不够用了。
问题是这样的,当你的 docker-compose.yaml 未指定 network 的时候,它会自动为你创建一个文件夹名_default 的网络,网络 CIDR 是 172.x.0.0/16。
每次我创建一个未配置 network 的 docker-compose 的时候都会创建一个,于是我的宿主机上就有了一堆这种子网。
172.0.0.0/16
172.1.0.0/16
172.2.0.0/16
...
这样很快就消耗了可用的 CIDR 网段。而且 /16 这样的 CIDR 太大了,可以容纳 65536 个虚拟机,或者说 docker instance。
解决问题的方法也很简单,自己定义网络的 CIDR 确保分配的网段大小不过大,这样就肯定不会有问题。
例如:
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
user: 1000:1000 # should be owner of volumes
ports:
- "4533:4533"
restart: unless-stopped
environment:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: trace
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
networks:
- navidrome
networks:
navidrome:
ipam:
driver: default
config:
- subnet: 172.26.0.40/29
ip_range: 172.26.0.40/29
gateway: 172.26.0.41
上面的代码指定了 subnet 范围是 172.26.0.40/29,可用地址范围 172.26.0.41 - 172.26.0.46,8 个,足够绝大多数 docker-compose.yaml 使用了。
这样可以极大的节约 subnet 地址空间,延缓甚至可以说杜绝地址用尽的到来。毕竟想用完这么多的地址所需要的虚拟机,我们的内存恐怕根本 hold 不住。