Я прохожу курс «Масштабирование 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
Если это так, перезапуск докера должен работать через прокси