如何配置docker以避免特定地址或子网?

如何配置docker以避免特定地址或子网?,docker,docker-compose,docker-networking,docker-network,Docker,Docker Compose,Docker Networking,Docker Network,在我们的开发环境中,我们使用docker compose文件管理20多个容器,但有时其中一个容器从我们的网络获取一个IP,我们失去了连接。当这种情况发生时,我们手动关闭容器和网络 当我们添加更多容器时,是否有办法配置docker以避免特定的IP地址或子网 我们的docker版本是: Client: Docker Engine - Community Version: 19.03.12 API version: 1.40 Go version:

在我们的开发环境中,我们使用docker compose文件管理20多个容器,但有时其中一个容器从我们的网络获取一个IP,我们失去了连接。当这种情况发生时,我们手动关闭容器和网络

当我们添加更多容器时,是否有办法配置docker以避免特定的IP地址或子网

我们的docker版本是:

Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:45:36 2020
 OS/Arch:           linux/amd64
 Experimental:      false
docker-compose version 1.25.4, build 8d51620a
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
我们的docker compose版本是:

Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:45:36 2020
 OS/Arch:           linux/amd64
 Experimental:      false
docker-compose version 1.25.4, build 8d51620a
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
主机操作系统是:
Linux-linuu-env\u-int\u 2 4.15.0-112-generic\113 Ubuntu-SMP-Thu-Jul 9 23:41:39 UTC 2020 x86\u 64 x86\u 64 GNU/Linux
(Ubuntu 18.04.4 LTS)

您可以通过在
/etc/docker/daemon.json
(Linux)文件中设置参数来配置默认网桥网络,如下所示:

{
  "bip": "192.168.1.5/24",
  "fixed-cidr": "192.168.1.5/25",
  "fixed-cidr-v6": "2001:db8::/64",
  "mtu": 1500,
  "default-gateway": "10.20.1.1",
  "default-gateway-v6": "2001:db8:abcd::89",
  "dns": ["10.20.1.2","10.20.1.3"]
}

Ref:

如果您有一个更大的基础设施,而此时可能会发生子网冲突,那么我建议您创建自己的docker网络,该网络将承载这些容器

您可以很容易地为docker网络指定IP范围,这样您就可以确保它不会与任何其他网络重叠

docker network create --subnet 10.10.0.0/16 mynet
并使用
--network mynet

docker container run -d -p 8080:80 --network mynet --name web nginx
使用docker container inspect检查集装箱

"IPAddress": "10.10.0.2",
在docker compose中,您可以像这样针对先前创建的网络(
mynet

version: "3.4"

services:
  web:
    image: nginx
    ports:
      - "8888:80"
    networks:
      - mynet

networks:
  mynet:
    external:
      name: mynet