docker 容器如果没有指定网络,在启动时会默认生成一个桥接的网络,如下图所示:
启动的 docker 容器多了,再启动其他容器的时候,就会出现Error response from daemon: Pool overlaps with other one on this address space
的提示。
为解决这个问题,可以采用手工创建桥接网络,然后在 docker-compose.yml 中指定网络的方式解决。
jiuzilong@jiuzilong:/data/dockerRoot/apps/chat2db$ docker -v
Docker version 24.0.4, build 3713ee1
jiuzilong@jiuzilong:/data/dockerRoot/apps/chat2db$ docker compose version
Docker Compose version v2.19.1
jiuzilong@jiuzilong:/data/dockerRoot/apps/chat2db$
一、创建桥接网络:
docker network create --subnet=192.168.100.0/16 --gateway=192.168.100.1 --opt "com.docker.network.bridge.name"="bridge_zzl" bridge_zzl
也可以补充些其他网络配置信息:
docker network create --subnet=172.66.0.0/16 --gateway=172.66.0.1 --opt "com.docker.network.bridge.default_bridge"="false" --opt "com.docker.network.bridge.name"="bridge_zzl" --opt "com.docker.network.bridge.enable_icc"="true" --opt "com.docker.network.bridge.enable_ip_masquerade"="true" --opt "com.docker.network.bridge.host_binding_ipv4"="0.0.0.0" --opt "com.docker.network.driver.mtu"="1500" bridge_zzl
如果创建失败,极有可能是网络数量超标了,可以停掉一些容器再创建。失败截图如下:
如果创建成功,会响应创建成功的 NETWORK ID,如下图所示:
二、docker-compose.yml 配置网络
配置示例:
version: '3'
services:
app:
# image: 'jc21/nginx-proxy-manager:2.9.22'
# image: 'chishin/nginx-proxy-manager-zh:latest'
image: 'zhuzl/nginx-proxy-manager:ssl'
restart: unless-stopped
container_name: nginxProxyManager
ports:
- '80:80'
- '81:81'
- '443:443'
networks:
- net-zzl
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
net-zzl:
name: bridge_zzl
external: true
核心是
networks:
net-zzl:
name: bridge_zzl
external: true
然后在 docker 应用中通过 networks
指定
networks:
- net-zzl
评论 (0)