Какой самый быстрый способ перейти с boot2docker на Vagrant+NFS в Mac OS X?

У меня есть контейнер базы данных, созданный из официального файла mysql docker pull mysql.

У меня есть интерфейсное приложение app, созданное с помощью Cake.

У меня есть серверное приложение cms, созданное с помощью Symfony.

Я настроил связывание контейнеров для app и cms для запуска и автоматического подключения к db.

Все работает отлично, но очень медленно с boot2docker.

Я пытался понять, как использовать Vagrant с NFS.

В Интернете есть несколько различных руководств и примеров, но пока я не смог приступить к работе. Я установил последнюю версию Vagrant и использовал пример yungsang/boot2docker, но когда я пробую простейшую команду docker images, я продолжаю получать такие ошибки, как FATA[0000] An error occurred trying to connect: Get https://localhost:2375/v1.16/images/json: tls: oversized record received with length 20527.

Я обнаружил, что если я vagrant ssh зайду на виртуальную машину, я смогу запустить docker images и тому подобное, но это не то, что я хотел; Я привык запускать команды Docker прямо из терминала Mac OS X. Так что явно я что-то не так понял. Кроме того, в руководствах в блоге Vagrant используются rsync и --provider=docker, которые также не кажутся необходимыми для использования бродячего блока yungsang/boot2docker.

Я был бы признателен за некоторые рекомендации и чувствую, что исчерпал свои возможности поиска Google на этом.

Ссылки:

https://www.vagrantup.com/blog/feature-preview-vagrant-1-6-docker-dev-environments.html https://github.com/boot2docker/boot2docker/issues/64 https://vagrantcloud.com/yungsang/boxes/boot2docker


person phpguru    schedule 09.02.2015    source источник
comment
Также полезно: reddit.com/r/docker/comments/2osgl7/vagrant_vs_boot2docker с образцом файла Vagrant dumptext.com/vKgOkYFF   -  person phpguru    schedule 10.02.2015


Ответы (1)


Обновление [2015-02-11]

Чтобы ответить на более широкий вопрос (тот, что в заголовке), я создал репозиторий на Github с Vagrantfile, который позволит вам быстро и легко начать работу с Vagrant+Docker+NFS на MacOS.

https://github.com/blinkreaction/boot2docker-vagrant


Исходный ответ на вопрос "tls: получена запись слишком большого размера" [10 февраля 2015 года]

Проблема

Проверьте переменные среды. Скорее всего, у вас есть смесь boot2docker shellinit и ваших пользовательских DOCKER_HOST переменных. Например.:

$ env|grep DOCKER

DOCKER_HOST=tcp://localhost:2375
DOCKER_CERT_PATH=/Users/<user>/.boot2docker/certs/boot2docker-vm
DOCKER_TLS_VERIFY=1

Причина, по которой вы сюда попали, заключается в том, что сначала $(boot2docker shellinit) экспортировал что-то вроде этого, чтобы указать клиенту докера на виртуальную машину boot2docker:

DOCKER_HOST=tcp://192.168.59.103:2376
DOCKER_CERT_PATH=/Users/<user>/.boot2docker/certs/boot2docker-vm
DOCKER_TLS_VERIFY=1

Затем вы указали своему клиенту докера на настраиваемый сопоставленный порт виртуальной машины с помощью

export DOCKER_HOST=tcp://localhost:2375

Как исправить

В ближайщем будущем

unset DOCKER_TLS_VERIFY

Долгосрочный

Либо избавьтесь от $(boot2docker shellinit) в вашем файле .bashrc, .zshrc и т. д. и выполните его вручную, когда это необходимо, либо расположите его в следующем порядке:

# Docker (default for Vagrant based boxes)
export DOCKER_HOST=tcp://localhost:2375

# boot2docker shellinit
$(boot2docker shellinit)

Таким образом, если boot2docker НЕ запущен, ваш DOCKER_HOST по умолчанию будет иметь значение tcp://localhost:2375.
В противном случае $(boot2docker shellinit) перезапишет переменные и установит DOCKER_HOST для указания на виртуальную машину boot2docker.

person Leonid Makarov    schedule 10.02.2015
comment
Круто, это сработало... ну, я могу запустить docker ps -a, но моя та же команда запуска docker, которую я использовал для db, завершается с ошибкой: FATA[0000] Ответ об ошибке от демона: команда не указана - person phpguru; 10.02.2015
comment
Спасибо за Vagrantfile на Github. Используете ли вы config.vm.provision :docker do |d| в вашем Vagrantfile? Я спрашиваю, потому что до сих пор у меня есть пустой Vagrantbox, на котором запущен образ yungsang/boot2docker, но я не могу использовать какие-либо команды запуска докера, чтобы на самом деле запускать контейнеры и приложения внутри него. - person phpguru; 12.02.2015
comment
$ vagrant up $ export DOCKER_HOST=tcp://localhost:2375 $ docker version Последняя команда выдает ошибку или показывает информацию о версии докера? Если это не сработает, вы сможете запустить свой докер. - person Leonid Makarov; 14.02.2015
comment
обратите внимание, что начиная с Docker 1.91a в Windows с настройкой по умолчанию мои переменные среды: DOCKER_HOST=tcp://192.168.99.100:2376 и DOCKER_CERT_PATH=%USERPROFILE%\.docker\machine\certs. Настройте их в системных свойствах Windows, и они будут работать постоянно. - person Alex C; 26.11.2015