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 или что-то в этом роде. Я не уверен, почему это произошло.