在 Mac 安装 Docker 环境的种种

其实很早就听说了 了,这正是现在世界上最炙手可热的容器技术。直到去年 2015 年,我们公司才有小伙,尝试使用 ,当时,我们公司是全 Mac 办公,而 只支持 Linux,于是各种非官方爱好者,做出了各种方案,比如当时,如果要在 Mac 上用 ,就必须安装一个 boot2 的组件,是一个在 Mac 上使用 的封装,同时还要依托 VirtualBox 才行,当然也有 VmWare 的版本,但是又是收费的。

这个 boot2docker 的方案,不但安装麻烦,其命令行界面也丑陋不堪。而负责去研究这个方案的小伙子,最终也没有给出特别好的技术方案,只是浅尝辄止的一个分享演讲而已,比较令人失望。

直到四个月前的 2016 年 4 月份,我终于有点空闲时间,用于研究 Docker,这个时候,Docker 官方网站,已经提供了 Docker Toolbox 用于解决在 Mac 和 Windows 系统使用 Docker 的难题。这个 Docker Toolbox 的实质,其实还是 boot2docker,只是这回,从非官方,变成了官方,名字也正名了,比较好听了,其核心,包含的组件和原来差不多。一个 docker engin,一个 docker compose,一个 docker machine,最后是 Kitematic。

所谓的 Docker Machine,其实质,仍然是 VirtualBox 里面的虚拟机,但是这回,提供了 docker-machine 这样的命令行接口,使得整个事情变得更加的简单,命令行接口被很大的简化了,用户需要搞懂的原理更少了。到这里,docker 对于 Mac 环境已经十分友好了。

后来,因为一些事情,我对 Docker 的研究又搁置了,直到这回,到官网一看,这回竟然提供了一个 Docker.dmg 来支撑 Mac 系统环境。这回,使用到的技术有了变化,其核心是一个叫做 xhyve 的组件。这个东西是 bhyve 在 Mac 上的一个移植,而 bhyve 是什么东西呢,其实是 FreeBSD 系统环境上的一个虚拟机管理器,而 Mac 底层也是 Unix 系统,所以一脉相承被人移植到了 Mac。这回,Docker 提供了一个叫 Docker.app 的图形化界面的 Docker 运行环境,执行起来,会在系统 Menu Bar 显示一个鲸鱼图标,这回就更具体,更可视化,更友好了。完全给了用户一个 0 学习成本的 Docker 使用环境。

这个官方的新组件,只支持 MacOS X Yosemite 10.10.3 以上版本,对于低版本来说,还是要使用 Docker Toolbox 里面提供的 docker-machine,而我在这个组件内部看到,docker-machine 指令也被打包到了这个里面。看来也是可以使用的。

Docker 是一个新兴技术,主要用于虚拟化和容器化,特别适用于现在流行的微服务架构,但是,不管怎么说,Docker 还是太新了,我想,我目前秉持的态度是,拥抱新技术,但是不能立即投入生产,技术架构的进化,还是要遵循规律,不是说 Docker 火,为了用 Docker 就去改造既有架构。架构是为了解决业务问题而存在的,除非有业务问题,既有架构模型解决不了,我不会轻易选择 Docker 用于企业生产。因为 Docker 不解决问题的情况下,一定免不了引入 Docker 本身有关的问题,那就得不偿失了。

以上是我几个月以来安装 Docker 环境时候的一点思考和记录。