Docker Desktop для Windows не работает при поиске / сборке с корпоративным прокси - PullRequest
0 голосов
/ 22 марта 2019

Я установил Docker Desktop для Windows Docker version 18.09.2, build 6247962, и я не могу собрать и создать образ.Даже docker search, похоже, не работает.

Сообщение об ошибке (например, при выполнении docker search):

Error response from daemon: Get https://index.docker.io/v1/search?q=ubuntu&n=25: proxyconnect tcp: dial tcp 172.17.14.133:3128: connect: no route to host

Мой офис находится за прокси-сервером.Поэтому в настройках «Прокси» DockerDesktop я установил http://172.17.14.133:3128 для HTTP и HTTTPS.Но, похоже, все еще не работает.

Я определил некоторые переменные ENV (как пользовательские, так и системные) следующим образом:

HTTPS_PROXY=http://proxypmi.tradyso.com:3128
HTTP_PROXY=http://proxypmi.tradyso.com:3128

Также:

C:\Users\my.user\AppData\Roaming\Docker\http_proxy.json:

{
  "http": "http://172.17.14.133:3128",
  "https": "http://172.17.14.133:3128",
  "exclude": null,
  "transparent_http_ports": [],
  "transparent_https_ports": []
}

C:\Users\my.user\AppData\Roaming\Docker\settings.json:

{
  "settingsVersion": 1,
  "autoStart": false,
  "checkForUpdates": true,
  "analyticsEnabled": false,
  "displayedWelcomeWhale": true,
  "displayed14393Deprecation": false,
  "displayRestartDialog": true,
  "displaySwitchWinLinContainers": true,
  "latestBannerKey": "",
  "debug": false,
  "memoryMiB": 2048,
  "swapMiB": 1024,
  "cpus": 2,
  "diskPath": null,
  "diskSizeMiB": 64000000000,
  "networkCIDR": "10.0.75.0/24",
  "proxyHttpMode": true,
  "overrideProxyHttp": "http://172.17.14.133:3128",
  "overrideProxyHttps": "http://172.17.14.133:3128",
  "overrideProxyExclude": null,
  "useDnsForwarder": true,
  "dns": "10.44.24.10",
  "kubernetesEnabled": false,
  "showKubernetesSystemContainers": false,
  "kubernetesInitialInstallPerformed": false,
  "cliConfigCreationDate": "03/22/2019 12:23:58",
  "linuxDaemonConfigCreationDate": "03/22/2019 12:22:19",
  "windowsDaemonConfigCreationDate": null,
  "versionPack": "default",
  "sharedDrives": {},
  "executableDate": "",
  "useWindowsContainers": false,
  "swarmFederationExplicitlyLoggedOut": false,
  "activeOrganizationName": null,
  "exposeDockerAPIOnTCP2375": false
}

C:\Users\my.user\.docker\config.json:

{
  "stackOrchestrator": "swarm",
  "auths": {},
  "credsStore": "wincred",
  "proxies":
  {
    "default":
    {
      "httpProxy": "http://172.17.14.133:3128",
      "httpsProxy": "http://172.17.14.133:3128",
      "noProxy": ""
    }
  }
}

Я также пытался передать build-arg в tocker build:

docker build --build-arg HTTP_PROXY=http://172.17.14.133:3128 --build-arg HTTPS_PROXY=http://172.17.14.133:3128 ...

Наконец, в конфигурации сети Docker Desktop я попытался использовать DNS как «Автоматически», так и «Вручную» (используя мои корпоративные DNS-серверы)

Ничего из этого не помогло.

Любой намек на то, что мне делать?

Спасибо.

1 Ответ

1 голос
/ 23 апреля 2019

Коллега обнаружила проблему:

По умолчанию мостовая сеть, которую создает докер, использует ту же подсеть, что и наш офис (172.17.0.0/16), и это вызывает проблемы с IP-адресом прокси (172.17.14.133).

Чтобы решить эту проблему:

Мостовая сеть не может быть удалена, но мы можем сказать докеру не создавать ее.

Перейти к настройкам демона, Дополнительно => добавьте "bridge": "none", в конфигурацию

После применения изменений Docker перезапустится, и теперь мы сможем создать собственную собственную мостовую сеть

В этом примере мы будем использовать (172.19.0.0/16)

Откройте консоль и напишите:

docker network create --subnet=172.19.0.0/16 --gateway 172.19.0.1 -o com.docker.network.bridge.enable_icc=true -o com.docker.network.bridge.name=docker_gwbridge -o com.docker.network.bridge.enable_ip_masquerade=true docker_gwbridge

Затем мы можем сделать docker ls для проверки успешности предыдущей команды:

$ docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
2a3635a49ffa        docker_gwbridge     bridge              local
4e9ec758ee9f        host                host                local
737c6c5fc82b        none                null                local

Теперь сделайте docker search ubuntu (например).Он должен иметь возможность подключаться к Интернету и получать изображения.

Важно: Отныне некоторые команды, которым требуется доступ в Интернет, должны будут указывать новую сеть докеров с дополнительным параметром--network="docker_gwbridge"

Например, команда сборки docker может быть такой:

docker build --network="docker_gwbridge" --build-arg http_proxy=http://172.17.14.133:3128 --build-arg https_proxy=http://172.17.14.133:3128 -t foobar .

[Edit]: для более простого метода используйте следующее:

При настройке демона добавьте "bip": "new_subbet".Например: "bip": "172.19.0.1/16".Затем перезапустите docker.

Теперь вам даже не нужно передавать дополнительный параметр --network="docker_gwbridge" командам.

Это более короткое решение может не работать со старыми версиями Docker для Windows., так что вы можете рассмотреть оригинальный ответ, если эта опция не работает.

...