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 ответов:
у меня тоже была эта проблема, и вот временное решение.
во-первых, откройте 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 затем работали нормально.
Я попробовал метод treehau5, но это не сработало. Я изменил сетевую настройку VirtualBox для настройки виртуальной машины boot2docker - "неразборчивый режим адаптера только для хоста", чтобы "разрешить все"
Я удалил vboxnet0 из настроек VirtualBox и инициализировал вторую виртуальную машину boot2docker (boot2docker --vm="boot2docker-vm2" init), чтобы воссоздать vboxnet0 с правильными настройками. После этого все казалось нормальным.
вот что сработало для меня, когда я попал в подобную ловушку. Убедитесь, что вы обновили VirtualBox, а затем:
boot2docker stop
boot2docker init
boot2docker start; eval "$(boot2docker shellinit)"
тогда, просто ради здравого смысла, проверьте это
$DOCKER_HOST
игр$(boot2docker ip)
. Я подозреваю, что у меня было много вещей, как когда я впервые начал,$DOCKER_HOST
стало как-то не по себе.вопрос и некоторые обсуждения можно найти на странице вопросов GitHub здесь - это скорее похоже на то, что это часто просто случай того, что VirtualBox является шелушащимся.