Ответ 1
Это известная проблема, появившаяся в версии 1.7.0 boot2docker: https://github.com/boot2docker/boot2docker/issues/824
Обновление для boot2docker 1.7.1
Обновление boot2docker 1.7.1 устраняет эту проблему, как описано здесь.
Параметры для boot2docker 1.7.0
Похоже, что это связано с тем, как во время загрузки появляются сетевые интерфейсы. Для этого можно использовать следующие параметры.
Вариант 1
Исправлено выполнение следующей последовательности, которая добавляет код для ожидания присутствия всех сетевых интерфейсов:
boot2docker ssh
sudo curl -o /var/lib/boot2docker/profile https://gist.githubusercontent.com/garthk/d5a17007c277aa5c76de/raw/3d09c77aae38b4f2809d504784965f5a16f2de4c/profile
sudo halt
boot2docker up
Источник (и более подробная информация о загружаемом коде): https://gist.github.com/garthk/d5a17007c277aa5c76de
Это устранило проблему для меня, хотя мне пришлось остановить boot2docker-vm через интерфейс VirtualBox, чтобы получить чистый старт.
Gist добавляет следующее в файл .profile
в VM-загрузчика:
wait4eth1() {
CNT=0
until ip a show eth1 | grep -q UP
do
[ $((CNT++)) -gt 60 ] && break || sleep 1
done
sleep 1
}
wait4eth1
Эта функция ждет до 1 минуты, чтобы интерфейс eth1 появился.
Вариант 2
Другой вариант - сделать
boot2docker delete
boot2docker init
boot2docker up
Это уничтожит виртуальную машину boot2docker - вы можете потерять все выполненные вами настройки.