Использование прокси как squid на linux хосте с docker контейнерами и мостовой сетью - PullRequest
0 голосов
/ 20 февраля 2020

TLDR

Кто-нибудь знает, как мне настроить squid, или docker, или ..., чтобы мои docker контейнеры могли получить доступ к inte rnet через мой прокси-сервер (squid) И контейнеры в одной сети могут обращаться друг к другу по своим именам хостов?

Длинный вопрос

Следующий сценарий:

  1. Существует корпоративный прокси
  2. На моем linux хосте я установил squid, который настроен для запроса родительского (корпоративного) прокси (как описано здесь https://wiki.squid-cache.org/Features/CacheHierarchy#How_do_I_configure_Squid_forward_all_requests_to_another_proxy .3F )
  3. Я хочу использовать docker - составить для запуска 2 служб, которые должны иметь доступ к inte rnet через прокси (squid) и получать доступ к конечным точкам http друг друга через имя хоста

My docker-compose.yml:

version: '3'

services:
  my-backend-service:
    image: "backend-service:latest"
    networks:
      - back-tier

  my-frontend-service:
    image: "frontend-service:latest"
    environment:
      - backend.hostname: my-backend-service
    networks:
      - back-tier

networks:
  back-tier:

Когда сервисам не требуется доступ к inte rnet, например API, эта настройка будет в порядке, так как сервис внешнего интерфейса может получить доступ к бэкэнд-сервис по имени хоста.
Но бэкэнд-сервису необходим доступ к API publi c в inte * 1 055 * и для этого он должен использовать прокси.

Чтобы это исправить, я создал следующий файл на своем хосте linux ~/.docker/config.json:

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://MY_HOSTNAME:3128",
     "httpsProxy": "http://MY_HOSTNAME:3128"
   }
 }
}

Примечание : Я должен использовать имя хоста моего хост-компьютера (MY_HOSTNAME), так как localhost или 127.0.0.1 не работают. Контейнер docker не найдет ничего, работающего на локальном хосте через порт 3128.

Хорошо, теперь мой бэкэнд-сервис может обращаться к API в inte rnet. Но мой frontend-сервис больше не может получить доступ к бэкэнд-сервису по имени хоста my-backend-service!

Когда я запускаю curl http://my-backend-service:8080 на my-frontend-service, я получу ответ от squid: что-то о том, что он не может определить IP-адрес по имени хоста ...

Вопрос Кто-нибудь знает, как мне настроить squid, или docker, или ... , чтобы мои docker контейнеры могли обращаться к inte rnet через мой прокси-сервер (squid) И контейнеры в той же сети могли обращаться друг к другу по своим именам хостов?

...