docker не может подключиться к boot2docker из-за таймаута tcp


Я запускаю Mac OS 10.9.5, я следовал https://docs.docker.com/installation/mac/ для установки docker. Я получаю сообщение об ошибке тайм-аута при запуске docker, даже если виртуальная машина boot2docker работает в фоновом режиме.

nikhil@macbook ~> boot2docker status
running
nikhil@macbook ~> boot2docker ip

The VM's Host only interface IP address is: 192.168.59.103

nikhil@macbook ~> 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
nikhil@macbook ~> 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 и что мой порт правильный.

nikhil@macbook ~> 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
docker@boot2docker:~$ sudo netstat -ntpl | grep docker
tcp        0      0 :::2376                 :::*                    LISTEN      629/docker
12 63

12 ответов:

у меня тоже была эта проблема, и вот временное решение.

во-первых, откройте virtualbox и проверьте сетевые настройки на виртуальной машине boot2docker, чтобы увидеть, что host only адаптер называется. В моем случае это vboxnet1; для вас это может быть vboxnet0.

затем примените эту команду:

sudo route -nv add -net 192.168.59 -interface vboxnet1

теперь вы должны иметь возможность запускать команды docker.

посмотреть этот вопрос для получения дополнительной информации

edit: я заметив со временем, что общим знаменателем в этой проблеме является cisco anyconnect (me included), fwiw

я использую OSX Yosemite и Cisco Anyconnect (которые, по-видимому, являются плохой комбинацией для использования boot2docker), и следующее, наконец, сработало для меня (благодаря связанный комментарий к выпуску GitHub):

эти шаги добавят правило переадресации портов и изменят вашу среду, чтобы docker указывал на 127.0.0.1 (вместо 192.168.59.103 или другой NATed IP).

First-boot2docker должен быть установлен, но не запущен.

если это в настоящее время бег-остановись сейчас:

boot2docker down

Добавить правило для переадресации трафика от 127.0.0.1:2376 в порт 2376 на виртуальной машине boot2docker:

vboxmanage modifyvm "boot2docker-vm" --natpf1 "docker,tcp,127.0.0.1,2376,,2376"

Start boot2docker:

boot2docker up

установить переменные среды DOCKER по умолчанию:

$(boot2docker shellinit)

переопределить DOCKER_HOST переменной, чтобы указать 127.0.0.1:

export DOCKER_HOST=tcp://127.0.0.1:2376

теперь вы должны иметь возможность запускать команды docker:

docker version

вот что я сделал, чтобы исправить проблему (я использую OSX Yosemite и принятый ответ не работает для меня):

  • boot2docker delete -предупреждение: это удаляет все настройки изображения.
  • в Virtualbox, перейдите в VirtualBox (меню) => Настройки => Сеть => Только Сети
    • удалить хост только сети, а затем я повторно добавил их
  • boot2docker init
  • boot2docker up

Теперь Докер работает из командной строки OS X через iTerm2 для меня.

Это случилось и со мной, и ни один из вышеперечисленных не исправил проблему.

сегодня, благодаря предложению коллег, я не запустил свой VPN первым. Я перезагрузил свою машину и начал с докера с самого начала.

boot2docker init
boot2docker up
$(boot2docker shellinit)
docker run hello-world

работал, как и ожидалось!

Я нашел это post Флориан Розенберг полезно. Я прочитал его подробно, но я думаю, что большая часть того, что он предлагает в первой части, была учтена в самой последней версия boot2docker. Но проницательный бит был "подключение к VPN вещи сломаются". То, что он предложил, - это искать правило брандмауэра, которое отрицает любое для любого. Итак, без 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 list / grep " запретить ip" 00411 1 64 запретить ip от любого до любой

Как только я удалил это правило брандмауэра с помощью: sudo ipfw удалить 00411

мне удалось поговорить с настройки из командной оболочки операционной системы OSX.

хорошо, так это случилось и со мной.

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

Итак, вместо запуска boot2docker, запустив пакет приложения (нажав на значок boot2docker), я запустил его из командной строки.

Я первый выполнил,

$boot2docker init

это говорит, что виртуальная машина уже работает.

тогда я пошел вперед и попытался запустить его.

$boot2docker start

С этого все и началось.

вы можете проверить это, запустив

$boot2docker info

Он выводит в формате JSON про свой экземпляр.

затем, вы можете ssh в него и запустить

$boot2docker ssh
$docker run hello-world

вот и все. Надеюсь, это поможет.

у меня была эта проблема после запуска Cisco AnyConnect. Даже после того, как я закрыл AnyConnect, проблема сохраняется. @treehau5 ' s ответ работает, но то, что также работало для меня было boot2docker poweroff а затем с помощью монитора активности, убить ciscod оставлено AnyConnect. Затем я открыл новое окно терминала и запустил boot2docker нормально, а команды docker затем работали нормально.

Это было легко для меня. Я обновил VirtualBox и эта проблема ушла.

Я попробовал метод treehau5, но это не сработало. Я изменил сетевую настройку VirtualBox для настройки виртуальной машины boot2docker - "неразборчивый режим адаптера только для хоста", чтобы "разрешить все"

Я удалил vboxnet0 из настроек VirtualBox и инициализировал вторую виртуальную машину boot2docker (boot2docker --vm="boot2docker-vm2" init), чтобы воссоздать vboxnet0 с правильными настройками. После этого все казалось нормальным.

вот что сработало для меня, когда я попал в подобную ловушку. Убедитесь, что вы обновили VirtualBox, а затем:

  1. boot2docker stop
  2. boot2docker init
  3. boot2docker start; eval "$(boot2docker shellinit)"

тогда, просто ради здравого смысла, проверьте это $DOCKER_HOST игр $(boot2docker ip). Я подозреваю, что у меня было много вещей, как когда я впервые начал,$DOCKER_HOST стало как-то не по себе.

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

вы проверили переменную среды DOCKER_HOST? Он должен указывать на

экспорт DOCKER_HOST=tcp: / / 192.168.59.103: 2376

в моем случае мне просто пришлось перезагрузить компьютер Mac, и проблема исчезла! Я не был подключен к VPN или что-то в этом роде. Я не уверен, почему это произошло.