Docker не может подключиться к boot2docker из-за тайм-аута tcp
Я запускаю Mac OS 10.9.5, я следил за https://docs.docker.com/installation/mac/, чтобы установить докер.
Я получаю сообщение об ошибке таймаута, когда я запускаю докеры, даже несмотря на то, что виртуальная машина boot2docker работает в фоновом режиме.
[email protected] ~> boot2docker status
running
[email protected] ~> boot2docker ip
The VM Host only interface IP address is: 192.168.59.103
[email protected] ~> docker run hello-world
2014/11/01 01:01:31 Post https://192.168.59.103:2376/v1.15/containers/create: dial tcp 192.168.59.103:2376: i/o timeout
[email protected] ~> docker search ubuntu
2014/11/01 01:02:40 Get https://192.168.59.103:2376/v1.15/images/search?term=ubuntu: dial tcp 192.168.59.103:2376: i/o timeout
Я проверил, что docker запущен внутри boot2docker vm и что мой порт верен.
[email protected] ~> boot2docker ssh
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.3.1, build master : 9a31a68 - Fri Oct 31 03:14:34 UTC 2014
Docker version 1.3.1, build 4e9bbfa
[email protected]:~$ sudo netstat -ntpl | grep docker
tcp 0 0 :::2376 :::* LISTEN 629/docker
Ответы
Ответ 1
У меня тоже была эта проблема, и это временное решение.
Во-первых, откройте виртуальный бокс и проверьте сетевые настройки на boot2docker vm, чтобы узнать, как назван адаптер host only
. В моем случае это vboxnet1; для вас это может быть vboxnet0.
Затем примените следующую команду:
sudo route -nv add -net 192.168.59 -interface vboxnet1
Теперь вы должны иметь возможность запускать команды докеров.
Для получения дополнительной информации см. эту проблему
edit. Я со временем замечаю, что общим знаменателем в этой проблеме является cisco anyconnect (включая меня), fwiw
Ответ 2
Я использую OSX Yosemite и Cisco Anyconnect (которые, по-видимому, являются плохими комбо для использования boot2docker), и следующее, наконец, работало для меня (благодаря связал GitHub вопрос):
Эти шаги добавят правило переадресации портов и изменят вашу среду, чтобы докеры указали на 127.0.0.1
(вместо 192.168.59.103
или другого NAT-адреса).
Сначала - boot2docker должен быть установлен, но не запущен.
Если он в данный момент запущен - остановите его сейчас:
boot2docker down
Добавьте правило для пересылки трафика с 127.0.0.1:2376
в порт 2376
на boot2docker vm:
vboxmanage modifyvm "boot2docker-vm" --natpf1 "docker,tcp,127.0.0.1,2376,,2376"
Запустить boot2docker:
boot2docker up
Задайте переменные окружения DOCKER по умолчанию:
$(boot2docker shellinit)
Переопределите переменную DOCKER_HOST
, чтобы указать на 127.0.0.1
:
export DOCKER_HOST=tcp://127.0.0.1:2376
Теперь вы должны иметь возможность запускать команды докеров:
docker version
Ответ 3
Вот что я сделал, чтобы исправить проблему (я использую OSX Yosemite и принятый ответ не работал у меня):
-
boot2docker delete
- Предупреждение: удаляет все ваши изображения докеров.
- В Virtualbox перейдите в VirtualBox (меню) = > Настройки = > Сеть = > Только хост-сети
- Удалите сети только хоста, затем я снова добавил их
-
boot2docker init
-
boot2docker up
Теперь Docker работает из командной строки OS X через iTerm2 для меня.
Ответ 4
Это случилось и со мной, и ни одна из вышеперечисленных проблем не возникла.
Сегодня, благодаря предложению коллег, я сначала не запускал свою VPN. Я перезагрузил свою машину и начал с докера в начале.
boot2docker init
boot2docker up
$(boot2docker shellinit)
docker run hello-world
Работал так, как ожидалось!
Я нашел этот пост Флорианом Розенбергом полезным. Я прочитал его подробно, но я думаю, что большинство из того, что он предлагает в первой части, было учтено в самой последней версии boot2docker. Но проницательный бит: "Подключение к VPN Things будет ломаться". Он предложил искать правило брандмауэра, которое отрицает любой из них. Итак, без VPN, я искал это правило, и его там не было. Конечно же, как только я активировал свою VPN, я получил следующую (другую) ошибку...
docker run hello-world
2014/11/13 11:11:18 Post https://192.168.59.103:2376/v1.15/containers/create: dial tcp 192.168.59.103:2376: permission denied
Я проверил правила брандмауэра и, конечно же, добавилось новое правило... sudo ipfw -a список | grep "deny ip" 00411 1 64 deny ip от любого к любому
Как только я удалю это правило брандмауэра с помощью: sudo ipfw удалить 00411
Мне удалось поговорить с докером из командной оболочки OSX.
Ответ 5
Хорошо, так и случилось со мной.
Прежде всего, необходимо установить переменные окружения. Но потом я продолжал получать ошибку тайм-аута ввода-вывода даже после этого.
Итак, вместо запуска boot2docker, запустив пакет приложения (щелкнув значок boot2docker), я запустил его из командной строки.
Я сначала выполнил,
$boot2docker init
Это говорит о том, что VM уже работает.
Затем я пошел вперед и попытался запустить его.
$boot2docker start
Это запустило его.
Вы можете проверить его, запустив
$boot2docker info
Он печатает JSON о вашем запущенном экземпляре.
Затем вы можете включить ssh и запустить
$boot2docker ssh
$docker run hello-world
Что это. Надеюсь, что это поможет.
Ответ 6
У меня возникла эта проблема после запуска Cisco AnyConnect. Даже после того, как я закрыл AnyConnect, проблема продолжалась. Ответ @treehau5 работает, но то, что также работало для меня, было boot2docker poweroff
, а затем с помощью Activity Monitor, убить ciscod
, оставленного AnyConnect. Затем я открыл новое окно терминала и начал нормально запускать boot2docker, а команды докеров выполнялись нормально.
Ответ 7
Это было легко для меня. Я обновил виртуальный бокс, и эта проблема исчезла.
Ответ 8
Я попробовал метод treehau5, но это не сработало. Я изменил настройку VirtualBox Network в настройке boot2docker vm - "Адаптер только для хостинга" Режим "Размещенный" для "Разрешить все"
Ответ 9
Я удалил vboxnet0 из настроек VirtualBox и инициализировал второй boot2docker vm (boot2docker --vm = "boot2docker-vm2" init), чтобы воссоздать vboxnet0 с правильными настройками. После этого все показалось нормальным.
Ответ 10
Вот то, что сработало для меня, когда я ударил аналогичную загвоздка. Убедитесь, что вы обновили VirtualBox, а затем:
-
boot2docker stop
-
boot2docker init
-
boot2docker start; eval "$(boot2docker shellinit)"
Затем, просто ради здравого смысла, убедитесь, что $DOCKER_HOST
соответствует $(boot2docker ip)
. Я подозреваю, что у меня много чего происходит, так как, когда я только начинал, $DOCKER_HOST
каким-то образом перестали.
Проблема и некоторые обсуждения можно найти на странице проблем GitHub здесь - это скорее похоже на то, что часто это просто случай VirtualBox будучи flaky.
Ответ 11
Вы проверили переменную окружения DOCKER_HOST? Он должен указывать на
export DOCKER_HOST = tcp://192.168.59.103: 2376
Ответ 12
В моем случае мне просто пришлось перезапустить мою компьютерную машину Mac, и проблема исчезла! Я не был подключен к VPN или что-то в этом роде. Я не уверен, почему это произошло.