Назад | Перейти на главную страницу

Вход Docker в AWS ECR завершается ошибкой «набрать tcp xxxx: 443: тайм-аут ввода-вывода»

Я прохожу курс «Масштабирование Docker для AWS», в котором говорится об использованииaws ecr get-login" чтобы получить "docker login" командная строка.

Я использую докер версии 1.12.6.

Когда я запускаю командную строку вывода, в которой указывается пользователь «AWS», длинный пароль и https-адрес в домене «amazonaws.com», я получаю примерно следующее:

Error response from daemon: Get https://....amazonaws.com/v1/users/: dial tcp xx.xx.xx.xx:443: i/o timeout

Затем я попытался выполнить curl напрямую в fqhn, и он подключился, но вернул 401 (неудивительно, поскольку я не отправлял никаких учетных данных при вызове curl).

Я также использовал nslookup чтобы убедиться, что fqhn разрешает IP-адрес, указанный в сообщении об ошибке (и два других IP-адреса).

Обратите внимание, что прямо сейчас я запускаю это за корпоративным брандмауэром. В "/etc/systemd/system/docker.service.d" У меня есть "http-proxy.conf"файл, который, как мне кажется, правильно устанавливает HTTP_PROXY и HTTPS_PROXY env vars.

Я также попытался отключиться от корпоративной сети, сбросив две настройки var в этом файле, перезагрузив демон, перезапустив службу докеров и повторно запустив командную строку. У меня точно такая же ошибка.

Что еще я могу сделать, чтобы это диагностировать?

Обновить:

Поскольку я не мог придумать, что еще попробовать, я обновился с 1.12.6 до 18.03.0-ce. Результаты такие же. Я указал наш прокси-хост: порт в config.json, как описано в документации. Я удалил эту настройку, когда пытался установить соединение, не используя наш прокси (точка доступа Wi-Fi на моем телефоне).

Я наконец понял это. В этой заметке я не упомянул, что делаю это на виртуальной машине VirtualBox.

Единственный способ, которым это вообще может работать, - это если я подключаюсь без корпоративного брандмауэра, используя точку доступа на моем телефоне. Чего я не понимал, так это того, что когда я подключаюсь к нему, мне также нужно изменить сетевое соединение на виртуальной машине. Внутри корпоративного брандмауэра это должен быть NAT, но когда я не нахожусь в корпоративной сети, он должен быть соединен мостом. После того, как я отключил свои прокси-переменные env, я смог сгенерировать и успешно выполнить команду входа в докер aws ecr.

Вы перезагружали systemd?

systemctl daemon-reload

После перезагрузки вы сможете проверить, верен ли ваш файл

systemctl show --property Environment docker

Если это так, перезапуск докера должен работать через прокси