Команды Docker-Machine тайм-аут рукопожатия TLS, но Dock Swarmer работает нормально

У меня сейчас проблемы с докер-машиной, раньше все работало нормально, так как тайм-ауты для команд на машинах, на которых работает докер в Digital Ocean.

Я могу подключиться к машине по SSH, а Docker Swarm и наша система, кажется, работают нормально на машинах (команда docker node, похоже, работает нормально, например, docker node ls).

Проблема, похоже, только с докер-машиной. У меня было что-то подобное в прошлом, и это можно было исправить, увеличив время ожидания, но теперь это не помогает.

Ошибка, по-видимому, вызвана тайм-аутом рукопожатия net/http HTLS в качестве вывода из:

докер-машина ls --timeout 30

показывает:

NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Stopped Unknown 
dev-m0 - digitalocean Error Unknown Get https://api.digitalocean.com/v2/droplets/42100174: net/http: TLS handshake timeout
dev-w1 - digitalocean Error Unknown Get https://api.digitalocean.com/v2/droplets/42115817: net/http: TLS handshake timeout
... repeated for all managers and workers.

Я использую Docker CE версии 17.05.0-ce-rc1-mac8 Edge на своем Mac и 17.03.0-ce на машинах Linux в Digital Ocean (похоже, это последняя доступная для них версия). Я переключался между Edge и Stable на Mac, чтобы увидеть, не вызывает ли это проблему, но это не помогло.

Я перезапустил машины (стоп и старт). Я не регенерировал сертификаты, потому что я могу без проблем подключиться по SSH к машинам с docker-machine ssh dev-m1, поэтому мне не показалось, что сертификаты будут проблемой. Я не пытаюсь запускать какие-либо контейнеры локально.

Раньше все работало нормально, но недавно перестало.

Любая помощь или предложения наиболее ценятся.

Спасибо, Эшли.


person Ashley Aitken    schedule 04.05.2017    source источник
comment
Вы также пытались перезапустить локальный Docker для Mac? Иногда он теряет синхронизацию с правильным временем, что может быть причиной того, что TLS больше не работает.   -  person gesellix    schedule 07.05.2017
comment
Да, спасибо, я много раз перезапускал Docker для Mac. Я даже перезапустил все докер-машины (т.е. те, которые находятся под контролем). Вероятно, это что-то с локальным Docker для Mac, потому что он влияет на все машины Docker. Я даже переустанавливал Docker для Mac, переходил со стабильной версии на крайнюю версию и обратно.   -  person Ashley Aitken    schedule 08.05.2017
comment
Я думаю, что это была проблема с докером. После обновления на более позднюю версию проблема исчезла.   -  person Ashley Aitken    schedule 01.08.2017


Ответы (1)


Гипотеза

Я предполагаю, что время внутри вашей виртуальной машины клиента Docker не синхронизировано с сервером цифрового океана, и это приводит к сбою рукопожатия TLS. Попробуйте синхронизировать часы, выполнив эту команду на своем Mac:

$ docker run --rm --privileged alpine hwclock -s

Эта команда установит часы внутри виртуальной машины на часы вашего Mac с помощью hwclock. команда. Ему нужен привилегированный доступ, потому что контейнеру необходимо считывать время с аппаратного обеспечения хоста.

Объяснение

Клиент Docker на вашем Mac работает внутри тонкой виртуальной машины. Время часов в виртуальной машине может не синхронизироваться со временем на вашем Mac и временем внешнего мира, особенно если вы используете докер на ноутбуке, которому разрешено спать. В этом случае десинхронизация времени может вызвать проблемы с любыми операциями, которым необходимо знать время, когда события произошли на сервере докеров (внутри виртуальной машины), и сравнивать это время с событиями, которые произошли за пределами сервера докеров. Я подозреваю, что рукопожатие TLS с цифровым океаном является одной из таких операций.

У меня возникли проблемы с событиями докера, которые ведут себя не так, как я ожидал. После длинной ветки в разделе проблем репозитория Docker (moby/moby#25579) мы выяснили, что причиной была рассинхронизация часов.

person Flavin    schedule 11.05.2017
comment
Спасибо, Флавин, за предложение. К сожалению, похоже, это не помогает. Я пробовал несколько раз и некоторые альтернативы. Буду продолжать попытки, и если я смогу заставить его работать, я получу награду. - person Ashley Aitken; 12.05.2017