Как отследить запросы Docker Pull от Docker для Mac, когда он запрашивает локальный реестр, работающий на macOS? - PullRequest
0 голосов
/ 18 апреля 2019

(я использую Docker для Mac версии 2.0.0.3 (31259), у которого есть docker-engine 18.09.2.)

Я пытаюсь сделать это:

  • Запустите процесс Docker-Registry непосредственно на моем Mac через порт 8080 (на самом деле это не Docker-Registry, а что-то похожее на реестр, поэтому это не имеет значения) без HTTPS
  • Запустите mitmproxy на моем Mac напрямую через порт 5000 (для перехвата запросов)
  • настроить механизм Docker для использования mitmproxy, чтобы я мог отслеживать запросы
  • , инициировать docker pull в моем локальном реестрепоэтому вызывает некоторые запросы в моем реестре, которые я могу отслеживать на mitmproxy.

Ситуация 1: прокси-сервер не настроен

Итак, как я уже говорил, у меня есть сервер, которыйимитирует API-интерфейс docker-registry v2, работающий непосредственно на моем MacOS через порт 8080. Поэтому я добавил host.docker.internal:8080 в качестве небезопасного реестра:

screenshot

Все работает (Docker-engine может ударитьмой локальный реестр) хорошо, если я не установил прокси для докег-двигатель.Например, я могу сделать docker pull host.docker.internal:8080/busybox, и запросы приходят к моему прокси:

screenshot

Ситуация 2: установить прокси для движка Docker, получить изображение из узла докера

Когда я указываю механизм докера на mitmproxy (host.docker.internal:5000) и выполняю docker pull library/mysql, он тоже отлично работает (я вижу запросы к index.docker.io)

screenshot

screenshot

Ситуация 3: установить прокси-сервер для движка докера, вытянуть изображение из концентратора докера

Поэтому, когда я объединяю Ситуацию № 1 + № 2, котораяуказав docker-engine на mitmproxy на моем ноутбуке в качестве прокси и затем пытаясь использовать docker pull host.docker.internal:8080/busybox, который работал раньше, сбой :

Подключение к серверу ('host.docker.internal ', 8080) не удалось: Ошибка подключения к «host.docker.internal»: [Errno 8] указано ни имя, ни имя сервера, либо неизвестно

screenshot

Ошибка моего прокси в том, что он не может найти host.docker.internal.Я не могу сказать, так ли это, потому что mitmproxy работает на моей операционной системе Mac (а не внутри виртуальной машины док-станции) и поэтому не может разрешить хост.

Я в основном не могу использовать mitmproxy(на моей операционной системе Mac) для отслеживания запросов механизма докера, а также для одновременного запуска реестра (на моей операционной системе Mac).

Я также пытался переместить реестр в контейнер и изменилимя хоста на gateway.docker.internal, но там тоже не повезло.

Есть идеи как этого добиться?

1 Ответ

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

Вы пытались добавить 127.0.0.1 host.docker.internal к вашему Mac /etc/hosts?Кажется, это работает для меня.

  • Виртуальная машина Docker разрешает host.docker.internal:5000 в 192.168.65.2:5000, который подключает ее к запуску mitm-прокси на Mac,
  • Mitm-прокси не 'не знает, как разрешить host.docker.internal, следовательно, ошибка nodename nor servname provided, or not known,
  • Добавляя запись в /etc/hosts, вы указываете mitm подключиться к localhost для доступа к реестру.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...