Ответ 1
Попробуйте переключиться на новое решение docker (beta)
У меня возникает повторяющаяся проблема с 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
Hack
Единственное, что сейчас работает для меня, - уничтожить докерную машину и воссоздать ее. Это уничтожает все мои изображения и контейнеры, и это невероятно трудоемко, чтобы настроить его снова.
docker-machine rm -y default && docker-machine create -d virtualbox default && eval $(docker-machine env)
Есть ли что-нибудь, что я могу попробовать? Спасибо!
Обновление: 9 мая (шаги по воспроизведению)
Я могу достоверно воспроизвести эту проблему со следующими шагами:
docker-compose up
для сборки некоторых контейнеров.Попробуйте переключиться на новое решение docker (beta)
Эта команда работала для меня с драйвером digitalocean:
docker-machine ls -t 20
Кажется, что время ожидания по умолчанию 10 секунд было слишком коротким.
Обычно это проблема, связанная с тем, как вы запускаете и останавливаете свою машину.
Вы можете решить это с помощью
$ docker-machine stop default
$ docker-machine start default
$ docker-machine regenerate-certs default
Не используйте docker-machine restart default
, потому что он не обновит ваши сетевые настройки.
У меня была такая же проблема с Docker версии 1.11.2, сборка b9f10c9
Это сработало для меня - мой докер вернулся в рабочее состояние
$ docker-machine restart
$ eval $(docker-machine env)
До сих пор у меня немного хакерское решение - это исправляет машину докеров, но уничтожает все контейнеры и изображения.
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)
Объяснение
Моя проблема была очень простой. Я блокировал порт 2376 брандмауэром UFW. Docker-машине нужен открытый порт для подключения к удаленному.
Это сработало для меня, и мои контейнеры не были уничтожены:
$ docker-machine restart default
Я открыл виртуальный бокс и закрыл и начал все vm вручную /. Состояние снова running
Моя проблема была очень тривиальной - я выполнил команду docker machine ls
сразу после перезапуска докера, поэтому он еще не работал, и это вызвало тайм-аут.