我有一个从官方mysql docker pull mysql
构建的数据库容器。
我有一个使用Cake构建的前端应用app
。
我有一个使用Symfony构建的后端应用cms
。
我为app
和cms
设置了容器关联,以便自动启动并自动连接到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
答案 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。