在Mac OS X上从boot2docker迁移到Vagrant + NFS的最快方式是什么?
我有一个数据库容器,从官方mysql docker pull mysql
build成。
我有一个用Cake构build的前端应用app
应用app
。
我有一个用Symfony构build的后端应用程序cms
。
我有容器连接设置为app
和cms
启动并自动连接到db
。
一切都很好,但是boot2docker的速度非常慢。
我一直在试图了解如何使用NFS与stream浪汉。
网上有几个不同的教程和例子,但到目前为止,我一直无法前进。 我已经安装了最新的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
等,但这不是我想要的; 我习惯于直接从Mac OS Xterminal运行docker命令。 很显然,我误解了一些东西。 另外,Vagrant博客上的教程使用rsync
和--provider=docker
,这似乎也不需要使用yungsang / boot2docker vagrant框。
我会感激一些指导,感觉我已经用尽了我的Googlesearchfunction。
参考文献:
https:/ / vagrantcloud。 COM / yungsang /盒/ boot2docker
更新[2015-02-11]
为了回答更广泛的问题(标题中的问题),我使用Vagrantfile在Github上创build了一个回购协议,可以让您从MacOS上的Vagrant + Docker + NFS快速轻松地入手。
https://github.com/blinkreaction/boot2docker-vagrant
“tls:过大的logging收到”问题的原始答复[2015-02-10]
问题
检查你的环境variables。 你很可能有boot2docker shellinit
和你自定义的DOCKER_HOST
variables的混合。 例如:
$ 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虚拟机:
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
长期
在你的.bashrc
, $(boot2docker shellinit)
等文件中删除$(boot2docker shellinit)
,并在需要的时候手动执行,或者按照以下顺序执行:
# Docker (default for Vagrant based boxes) export DOCKER_HOST=tcp://localhost:2375 # boot2docker shellinit $(boot2docker shellinit)
这样,如果boot2docker没有运行,你的DOCKER_HOST
将默认为tcp://localhost:2375
。
否则, $(boot2docker shellinit)
会覆盖variables并将DOCKER_HOST
设置为指向boot2docker虚拟机。