自定义 docker 网络

朱治龙
2023-08-17 / 0 评论 / 99 阅读 / 正在检测是否收录...

docker 容器如果没有指定网络,在启动时会默认生成一个桥接的网络,如下图所示:

llfwwor8.png

启动的 docker 容器多了,再启动其他容器的时候,就会出现Error response from daemon: Pool overlaps with other one on this address space 的提示。

为解决这个问题,可以采用手工创建桥接网络,然后在 docker-compose.yml 中指定网络的方式解决。

一、创建桥接网络:

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

如果创建失败,极有可能是网络数量超标了,可以停掉一些容器再创建。失败截图如下:
llfx27au.png
如果创建成功,会响应创建成功的 NETWORK ID,如下图所示:
llfx08mr.png

二、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

评论 (0)

取消