Докер не может получить доступ к интрасети, которую хост может
Я за корпоративным прокси. я имею HTTP_PROXY
, HTTPS_PROXY
, а также NO_PROXY
установить на изображении. Когда я подключен к сети, у меня есть доступ к частному npm
реестр, который находится в этой интрасети. Мой образ докера не может получить доступ к этому реестру.
На хост-компьютере Mac я могу запустить:
curl https://<registry>/nodejs/content/groups/npm/lodash
И я получаю JSON за пакет.
На образе докера я запускаю ту же команду и получаю это:
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Когда я npm install
с установленным реестром он также возвращает ту же проблему.
Почему Docker не может получить доступ к той же конечной точке, что и мой хост-компьютер? Как я могу включить это?
2 ответа
Попробуйте использовать сеть хоста. Если вы можете получить доступ к этому URL из вашего локального, то он должен работать. Вам просто нужно добавить аргумент --network host в команду build/run.
Пример:
$ docker build <all the other args> --network host .
$ docker run <all the other args> --network host .
Docker создает мостовую сеть по умолчанию, но вы можете заставить его использовать вашу локальную сеть с параметром --network host arg.
Я столкнулся с аналогичной проблемой, когда там была сеть докеров, созданная каким-то файлом compose.
docker network ls
Я удалил болтающуюся и сохранил доступ к внутренней сети
Немного поздно, но это может кого-то. У меня была та же проблема, и мое решение было настроить демон Docker для использования моей интрасети DNS
Изменить daemon.json
файл
sudo vim /etc/docker/daemon.json
Файл должен выглядеть примерно так
{
"dns": ["ip-here", "ip-here"]
}
Restart de daemon
sudo service docker restart