在Mac OS X上从boot2docker迁移到Vagrant + NFS的最快方法是什么?

时间:2015-02-09 23:21:51

标签: docker osx-yosemite nfs boot2docker

我有一个从官方mysql docker pull mysql构建的数据库容器。

我有一个使用Cake构建的前端应用app

我有一个使用Symfony构建的后端应用cms

我为appcms设置了容器关联,以便自动启动并自动连接到db

一切都很好但是boot2docker的速度非常慢。

我一直在努力了解如何在NFS中使用Vagrant。

网上有一些不同的教程和示例,但到目前为止,我一直无法上手。我已经安装了最新的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进入VM,我可以运行docker images等等,但这不是我想要的;我习惯直接从Mac OS X终端运行docker命令。很明显我误解了一些东西。此外,Vagrant博客上的教程使用rsync--provider=docker,这似乎也不需要使用yungsang / boot2docker vagrant框。

我会感激一些指导,觉得我在这个问题上耗尽了我的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

1 个答案:

答案 0 :(得分:17)

更新[2015-02-11]

为了回答更广泛的问题(标题中的那个)我在Github上创建了一个带有Vagrantfile的回购,它可以让您快速轻松地在MacOS上使用Vagrant + Docker + NFS。

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


“tls:收到超大记录”问题的原始答案[2015-02-10]

问题

检查您的环境变量。您最有可能混合使用boot2docker shellinit和自定义DOCKER_HOST变量。 E.g:

$ env|grep DOCKER

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

你到达这里的原因是首先$(boot2docker shellinit)导出类似这样的东西,将docker客户端指向boot2docker VM:

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

然后,您使用

将docker客户端指向自定义VM映射端口
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 VM。