Как настроить docker, чтобы избежать и указать адрес c или su bnet? - PullRequest
1 голос
/ 05 августа 2020

В нашей среде разработки мы управляем 20+ контейнерами с docker -композиционными файлами, но время от времени один из них получает один IP-адрес из нашей сети, и мы теряем связь. Когда это происходит, мы вручную закрываем контейнер и сеть.

Есть ли способ настроить docker, чтобы избежать указанного c IP-адреса или su bnet при добавлении дополнительных контейнеров?

Наша версия 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 -компоновочная версия:

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 lin_env_int_2 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux (Ubuntu 18.04 .4 LTS)

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Вы можете настроить сеть моста по умолчанию, установив параметры в файле /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: https://docs.docker.com/network/bridge/#configure -по умолчанию -бридж-сеть

1 голос
/ 05 августа 2020

Если у вас большая инфраструктура, когда могут возникнуть эти bnet коллизии, тогда я бы рекомендовал создать вашу собственную docker сеть, в которой будут размещаться эти контейнеры.

Вы можете легко указать диапазон IP-адресов для этого docker сеть, чтобы вы могли быть уверены, что она не перекрывается ни с одной из других ваших сетей.

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
...