Подтвердить что ты не робот

Время ожидания докера - как исправить, не разрушая машину?

У меня возникает повторяющаяся проблема с Docker Machine - каждые несколько дней он решает тайм-аут, и я не могу восстановить его, как только это произойдет.

Пример

docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER   ERRORS
default            virtualbox   Timeout

Информация о среде

uname -a                 Darwin ColeyMBPR 15.4.0 Darwin Kernel Version 15.4.0: Fri Feb 26 22:08:05 PST 2016; root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64
docker version           1.11.0
docker-machine version   0.7.0
vboxmanage --version     5.0.20r106931

Попытки решения

Я пробовал следующие вещи в определенном порядке:

  • Перезагрузка докерной машины.
  • Запуск eval "$(docker-machine env default)"
  • Восстановление сертификатов docker-machine regenerate-certs default
  • Перезагрузка моего хоста.
  • Обновление докеров.
  • Переустановка Docker.
  • Обновление VirtualBox.
  • Удаление всех сетевых устройств на базе только VirtualBox.

Hack

Единственное, что сейчас работает для меня, - уничтожить докерную машину и воссоздать ее. Это уничтожает все мои изображения и контейнеры, и это невероятно трудоемко, чтобы настроить его снова.

docker-machine rm -y default && docker-machine create -d virtualbox default && eval $(docker-machine env)

Есть ли что-нибудь, что я могу попробовать? Спасибо!


Обновление: 9 мая (шаги по воспроизведению)

Я могу достоверно воспроизвести эту проблему со следующими шагами:

  • Начните с недавно созданной машины Docker.
  • Используйте docker-compose up для сборки некоторых контейнеров.
  • Выключить компьютер с запущенными контейнерами.
  • После перезагрузки Docker CLI не работает из-за выключения таймера Docker.
4b9b3361

Ответ 3

Обычно это проблема, связанная с тем, как вы запускаете и останавливаете свою машину.

Вы можете решить это с помощью

  1. $ docker-machine stop default
  2. $ docker-machine start default
  3. $ docker-machine regenerate-certs default

Не используйте docker-machine restart default, потому что он не обновит ваши сетевые настройки.

Ответ 4

У меня была такая же проблема с Docker версии 1.11.2, сборка b9f10c9

Это сработало для меня - мой докер вернулся в рабочее состояние

  1. $ docker-machine restart
  2. $ eval $(docker-machine env)

Ответ 5

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

Script: rebuild-machine.sh

docker-machine rm -y default
docker-machine create -d virtualbox default
docker-machine stop default
VBoxManage modifyvm "default" --natpf1 "Forwarding App 1,tcp,127.0.0.1,3000,,3000"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 2,tcp,127.0.0.1,3001,,3001"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 3,tcp,127.0.0.1,3004,,3004"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 4,tcp,127.0.0.1,3005,,3005"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 5,tcp,127.0.0.1,3006,,3006"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 6,tcp,127.0.0.1,8081,,8081"
docker-machine start default
eval $(docker-machine env)

Объяснение

  • Уничтожает машину докеров, контейнеры и изображения по умолчанию.
  • Создает новую машину докеров в VirtualBox и останавливает ее, чтобы мы могли изменять VirtualBox.
  • Добавляет перенаправление портов для различных приложений на VirtualBox.
  • Запускает докер-машину.
  • Обеспечивает настройку терминала для нового IP-адреса устройства докеров.

Ответ 7

Это сработало для меня, и мои контейнеры не были уничтожены:

  1. Открыл виртуальную коробку Oracle и приостановил работу виртуальной машины
  2. Перезапустил ВМ на докере

$ docker-machine restart default

  • версия докера: 1.12.3
  • версия докера-машины: 0.8.2, сборка e18a919

Ответ 8

Я открыл виртуальный бокс и закрыл и начал все vm вручную /. Состояние снова running

Ответ 9

Моя проблема была очень тривиальной - я выполнил команду docker machine ls сразу после перезапуска докера, поэтому он еще не работал, и это вызвало тайм-аут.