Docker при Windows 10 проблем с сетью - PullRequest
0 голосов
/ 05 марта 2020

Я использую Docker на ноутбуке с Windows 10. Недавно я попытался заставить некоторый код работать в контейнере для подключения к другому серверу в сети. В итоге я создал контейнер Ubuntu и обнаружил, что проблема заключается в конфликте IP между docker сетью и ресурсом сервера (172.17.1.3).

Похоже, на * 1024 существует дополнительный уровень сети Настройка * Docker в системе Unix отсутствует, а комментарии docker о «простом использовании мостовой сети» не решают эту проблему.

docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "d60dd1169153e8299a7039e798d9c313f860e33af1b604d05566da0396e5db19",
        "Created": "2020-02-28T15:24:32.531675705Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

Можно ли изменить подсеть / шлюз, чтобы избежать конфликта IP? Если так, то как? Я попробовал эту простую вещь и создал новую docker сеть:

docker network create --driver=bridge --subnet=172.15.0.0/28 --gateway=172.15.0.1 new_subnet_1

Кажется, что где-то все еще есть конфликт, в 172.17.0.0/16 другие устройства просто ничего не достигают. Я предполагаю, что это где-то в HyperV, адаптере vEthe rnet или vswitch.

UPDATE 1 Я взглянул на wireshark (уровень P C) с сетью new_subnet_1 и Я не видел, чтобы эти пакеты покидали интерфейс vSwitch или NI C P C. Я видел этот Docker форум , который указывает на проблему с Hyper-V и V-switch, которая может быть проблемой.

Docker Engine v19.03.5 DockerDesktopVM, созданный Docker для Windows установка

ОБНОВЛЕНИЕ 2 После нескольких изменений Hyper-v и восстановления среды я проверяю DockerDesktopVm. После получения доступа из привилегированного контейнера я обнаружил, что в сети docker0 был конфликт IP. Docker0 - это та же самая мостовая сеть по умолчанию, которую я избегал, потому что это предопределенная сеть, которую нельзя удалить, и весь мой трафик c отправляется в нее.

1 Ответ

0 голосов
/ 09 марта 2020

После нескольких ответвлений и, по крайней мере, один раз нарушив мою среду, я обнаружил, что решение оказалось проще, чем когда-либо.

  1. Отключено Docker Службы рабочего стола
  2. Добавлена ​​следующая строка в файл %userprofile%\.docker\deamon.json в windows 10

      ....lse,
      "bip": "172.15.1.6/24"   <<new non conflicting range
    }
    
  3. Перезапущено Docker Служба рабочего стола

Простое решение после поиска параметров в Hyper-V и Docker Host Linux VM.

...