Назад | Перейти на главную страницу

Виртуальная машина Docker в OS X установлена, но команды не работают

Я настраиваю Docker на своем локальном компьютере Mac OS X, и у меня возникают проблемы с его работой. Я выполнил инструкции по установке на https://docs.docker.com/installation/mac/. Кажется, все, вплоть до установки инструмента boot2docker, проходит гладко, но после запуска виртуальной машины команды Docker, похоже, ничего не делают. Например.,

$ docker run ubuntu echo hello world
2014/06/17 08:20:54 Post http://localhost:4243/v1.12/containers/create: EOF

Каждая команда заканчивается EOF и, похоже, не выполняет то, что на самом деле должна делать. Вот еще один:

$ docker ps
2014/06/17 08:25:10 Get http://localhost:4243/v1.12/containers/json: EOF

Виртуальная машина, созданная с помощью инструмента boot2docker, также работает:

$ boot2docker status
[2014-06-17 08:26:24] boot2docker-vm is running.

Я чувствую, что что-то настроено неправильно, но я следовал инструкциям строка за строкой и не вижу, где что-то идет не так.

Любая помощь очень ценится, спасибо!

Обновление 1

версия boot2docker: 1.0.0 или 0.9.1 (не уверен - флаг версии AFAICT отсутствует)

$ boot2docker ip
Usage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download}

В экземпляре boot2docker:

$ sudo netstat -ntpl | grep docker
tcp        0      0 :::2375                 :::*                    LISTEN      743/docker

$ docker --version
Docker version 1.0.0, build 63fe64c

Обновление 2

Я только что переустановил boot2docker, и теперь я определенно работает 1.0.0.

$ boot2docker version
Client version: v1.0.0
Git commit: 2fef7b2

Я также повторно выполнил команду из документации (что противоречит тому, что команда сказала мне установить DOCKER_HOST в командной строке, см. Ниже):

$ boot2docker up
2014/06/17 18:25:43 Waiting for VM to be started...
.............................
2014/06/17 18:26:41 Started.
2014/06/17 18:26:41 Auto detection of the VM's IP address.
2014/06/17 18:26:41 To connect the Docker client to the Docker daemon, please set:
2014/06/17 18:26:41     export DOCKER_HOST=tcp://:4243

Но я все еще вижу исходную проблему.

$ docker run ubuntu echo hello world
2014/06/17 18:28:29 Post http://127.0.0.1:4243/v1.12/containers/create: EOF

Затем я повторно запускаю команду, указанную в документации:

$ export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375

А теперь посмотрите на это:

$ docker run ubuntu echo hello world
2014/06/17 18:31:39 Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

Я должен упомянуть, что пытаюсь бежать docker -d в OS X вылетает это сообщение:

$ docker -d
2014/06/17 18:34:04 The Docker daemon is only supported on linux

Что не сильно помогает ...

Пара вещей, которые стоит проверить:

Обновленная версия boot2docker

Убедитесь, что ваш boot2docker обновлен. Если вы установили через приложение, такое как Homebrew, возможно, вы используете более старую версию. Проверьте официальные выпуски на https://github.com/boot2docker/osx-installer/releases. Обязательно беги boot2docker delete а потом boot2docker init после обновления.

Обновленный клиент Docker

Вероятно, будет хорошей идеей запустить клиент Docker, который соответствует версии сервера, работающего в boot2docker. Если вы используете Docker 1.0 в boot2docker, убедитесь, что у вас есть клиент 1.0 из https://github.com/boot2docker/osx-installer/releases.

Экспорт правильного порта

Порт в ваших командах может быть неправильным. Вы не забыли бежать export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375 как говорится в документации? Порт 2375 - это новое значение по умолчанию для Docker 1.0 (которое есть как в boot2docker 0.9.1, так и в 1.0.0).

Прямой правильный порт

После обновления DOCKER_HOST для клиента вы можете столкнуться с проблемой с boot2docker 0.9.1, который использовал неправильный порт для TCP-соединений Docker. Шаги для проверки:

  1. Войдите в виртуальную машину boot2docker, используя boot2docker ssh (пароль tcuser).
  2. Затем проверьте порт прослушивания, используя sudo netstat -ntpl | grep docker (наверное 2375).
  3. Теперь откройте VirtualBox, перейдите в настройки виртуальной машины boot2docker, затем нажмите Port Forwarding кнопка.
  4. Он должен соответствовать порту прослушивания в boot2docker (возможно, 2375).
  5. Если порт не совпадает, попробуйте обновить переадресацию портов, а затем снова попробуйте клиент.

Энди проделал мне 99% пути. Я отмечаю его ответ как принятый, но напишу здесь, что решило мою проблему. После установки правильной версии (1.0.0) boot2docker я все еще получал неправильный вывод любых команд Docker.

Затем я открыл VirtualBox и прочитал порты, и, о чудо, порты были неправильными. Однако переключение их на правильные значения не устранило проблему.

Я решил перезагрузить ВМ, так как старый boot2docker, вероятно, настроил ее неправильно. Следующие команды решили проблему.

$ boot2docker delete
$ boot2docker init
$ export DOCKER_HOST=tcp://:2375