Сбой входа Docker в AWS ECR с "dial tcp xxxx:443: I / O timeout"
Я прохожу курс "Scaling Docker для AWS", который определяет использование "aws ecr get-login
" чтобы получить "docker login
" командная строка.
Я использую докер версии 1.12.6.
Когда я запускаю командную строку вывода, в которой указан пользователь "AWS", длинный пароль и URL-адрес https в домене "amazonaws.com", я получаю что-то вроде следующего:
Error response from daemon: Get https://....amazonaws.com/v1/users/: dial tcp xx.xx.xx.xx:443: i/o timeout
Затем я попытался свернуться прямо к fqhn, и он подключился, но вернул 401 (что неудивительно, поскольку я не отправлял учетные данные при вызове curl).
Я также использовал nslookup
чтобы убедиться, что fqhn разрешает IP-адрес, указанный в сообщении об ошибке (и два других IP-адреса).
Обратите внимание, что сейчас я запускаю это за брандмауэром корпорации. В "/etc/systemd/system/docker.service.d
" У меня есть "http-proxy.conf
"файл, который я считаю, правильно устанавливает HTTP_PROXY
а также HTTPS_PROXY
env vars.
Я также попытался отключиться от сети corp, сбросить два параметра var в этом файле, перезагрузить демон, перезапустить службу docker и снова запустить командную строку. Я получил точно такую же ошибку.
Что еще я могу сделать, чтобы диагностировать это?
Обновление:
Поскольку я не мог придумать что-либо еще, я обновился с 1.12.6 до 18.03.0-ce. Результаты одинаковы. Я указал наш прокси-хост: порт в config.json, как описано в документации. Я удалил эту настройку, когда попытался установить соединение, не используя наш прокси (точка доступа Wi-Fi на моем телефоне).
2 ответа
Я наконец понял это. В этой заметке я не упомянул, что я делаю это на виртуальной машине VirtualBox.
Единственный способ, которым это может работать вообще, - это подключиться без брандмауэра корпорации, используя точку доступа на моем телефоне. Чего я не понял, так это того, что когда я подключаюсь к этому, мне также приходится менять сетевое соединение на виртуальной машине В брандмауэре corp это должен быть NAT, но когда я не в сети corp, он должен быть соединен. После того, как я удалил свои proxy env vars, я смог сгенерировать и успешно выполнить команду входа в систему aws ecr docker.
Вы перезагрузили systemd?
systemctl daemon-reload
Вы должны быть в состоянии проверить после перезагрузки, если ваш файл правильный
systemctl show --property Environment docker
Если это так, перезапуск докера должен работать через прокси