使用 Docker Mac 版的第一印象

本文由 DaoCloud 独家翻译。

三月末,Docker 同仁宣布发行新款「Docker Mac 版」和「Docker Windows 版」的测试版本。这些工具为现行的 VirtualBox 虚拟机用户提供了其他选择,旨在为运行容器提供更加无缝流畅的环境,在使用体验上向 Linux 看齐。

Docker_for_Mac

我注册了测试版本,一周多之前拿到了 Docker Mac 版,用内置容器和我自己开发的东西折腾至今。在使用体验上时而让我倍感惊喜,有时候也难免炸毛,也可以理解,因为这毕竟只是个测试版。

优点

如果启动数量非常巨大,用 Docker Mac 版,你不必在 VM 中开启快速启动终端或者 SSH,只需要启动你最喜欢的终端,然后直接运行 docker 命令就行。在我看来,这大大简化了使用 Docker 进行开发的难度,因为你可以在用顺手了的工作流中直接添加 Docker,而不是为了适应 Docker 重新创建工作流。 640

docker_for_mac_beta

显而易见,这一版本带来了很多惊喜。仅仅一个月的时间里,产品反馈的论坛上已经很热闹了。我遇到的任何问题(更多的在后面),之前都有人问过,有人答过,这一点很振奋人心。

除了这一更「接地气」的感受,还有很重要的一点是,你仍然是在 VM 里运行容器。尤其 Docker Mac 版,是在一款名为 xhyve 的轻量级管理程序上运行虚拟光驱。这意味着在启动 Docker Mac 版时,还需要启动 VM。如果要在开启虚拟光驱后马上运行 Docker 命令,就要创建一个小但是足够显眼的滞后停格(lag)。不过新的 VM 的启动速度比 VirtualBox 下的 Docker VM 快得多,而且如果在登录启动时已经配置好了 Docker,等待时间会短到让你根本注意不到。

缺点

在一些地方,虚拟层崩溃得比较频繁。首先,Docker Mac 版使用的处理器特性,是只有较新的 Mac 系统才有的(2012 年后期以来)。我工作用的 Mac Pro 缺少这些特性,我家用的 MacbookPro 刚摸到边。

对于其他使用管理程序特性的软件,Docker Mac 版本也存在崩溃的可能。我发现当它运行时,安卓 Studio 会拒绝启动模拟器。而且从一些文件上看,它与 VirtualBox 的一些早期版本也不兼容。

我遇到的故障主要跟网络相关。在默认情况下,Docker Mac 版是通过独立 IP 来暴露端口的(跟回环接口地址相反)。这一 IP 可以从 ‘docker.local’ 上得到。我没有完全读透新手指南,结果没找到 IP,还花了几分钟去查明为什么端口没有发送。有一回我查明了,本来刚开始一切静好,突然间我就发现所有的容器都没有发送端口,而且在“ docker ps” 中显示 “无 IP”(要么是因为我连着酒店的 WIFI,要么就是一些配置改了我不知道)。

641

我折腾了半天却劳而无功,只好向论坛求助。有人提供了一种简单的修复方法,用 pinata 工具修改端口发送设置:

642Screen Shot 2016-06-01 at 11.13.08 AM642

这一大优势可以直接把容器端口发送到本地主机,大大改善了我的开发体验。比如,如果我在搭建一个使用 OAuth 的网络服务器,我不必另设单独的配置,在本地运行服务器和测试容器。看起来这会在今后的更新中变成默认行为,但现在看来还是非常具有实践性的。

结论

总之,Docker Mac 版前途无量。诚然,作为测试软件,它还有一些美中不足,但有着如此积极高效的社区,我十分确信最终版本将值得我们期待。

然而很不幸,由于系统要求不同,它很难全面取代 VirtualBox VM,因为还有很多用户用着老式 Mac 系统。

更新(04/23/2016):Docker Mac 测试版第 9 版刚刚发行,它让本地主机成为端口映射的默认配置。不仅如此,我还注意到,在搭建自己当前的项目时,速度有了明显的提升!

 

Leave a Reply

Your email address will not be published. Required fields are marked *