Я настраиваю 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.
Я чувствую, что что-то настроено неправильно, но я следовал инструкциям строка за строкой и не вижу, где что-то идет не так.
Любая помощь очень ценится, спасибо!
версия 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
Я только что переустановил 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 обновлен. Если вы установили через приложение, такое как Homebrew, возможно, вы используете более старую версию. Проверьте официальные выпуски на https://github.com/boot2docker/osx-installer/releases. Обязательно беги boot2docker delete
а потом boot2docker init
после обновления.
Вероятно, будет хорошей идеей запустить клиент 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. Шаги для проверки:
boot2docker ssh
(пароль tcuser
).sudo netstat -ntpl | grep docker
(наверное 2375
).Port Forwarding
кнопка.2375
).Энди проделал мне 99% пути. Я отмечаю его ответ как принятый, но напишу здесь, что решило мою проблему. После установки правильной версии (1.0.0) boot2docker я все еще получал неправильный вывод любых команд Docker.
Затем я открыл VirtualBox и прочитал порты, и, о чудо, порты были неправильными. Однако переключение их на правильные значения не устранило проблему.
Я решил перезагрузить ВМ, так как старый boot2docker, вероятно, настроил ее неправильно. Следующие команды решили проблему.
$ boot2docker delete
$ boot2docker init
$ export DOCKER_HOST=tcp://:2375