本文发自 http://www.binss.me/blog/say-goodbye-to-docker/,转载请注明出处。

两周前,在开机时看到 Mac 任务栏上的小鲸鱼在“装箱”,突然想起电脑上还装着 Docker。

Docker,这个美好的东西,自 15 年入坑,如今已经是使用它的第三个年头。docker ps 里面的一个个容器,见证着这些年摆弄过的技术和应用。曾几何时,对 Docker 的痴迷让我开始研究起 Docker 的源码,结果还没看到一半就发现它改架构了。我也尝试学习 k8s,但除了在 VPS 上搭了一套用于自 high 外就没有什么后文了。后来学业压力如期而至,研究方向也转向 KVM 和 QEMU,也就没有再折腾 Docker 了。

随着热度的褪去,敲下 docker 系列的指令的频率也就越来越低。我逐渐发现,我对 Docker 的依赖并没有想象中的那么强。

课程 Lab,老师直接扔下一个虚拟机镜像。折腾软件,直接跑一个 Ubuntu 16.04 Server 的虚拟机,启动时间也不比小鲸鱼的 “装箱” 长多少。后来,老板提供了一台 48 核的 server,于是日常的学习和研究更是直接 ssh 到 server 上来做,那种频繁换 kernel 插 module 的工作,也是 Docker 无法胜任的。

于是乎到后来,我在自己的电脑几乎就没有再用到 Docker 了。想到这里,我吸了一口气,然后决然地将 Docker 和所有的 image、container 都移除了。直到两周后的今天,写下此文的今天,我回想起这件事,感慨已经成功“戒 Docker"。

当然,在大洋对岸的两台 VPS 依然欢快地跑着 Docker。但回想起来,似乎自己当初是为了 Docker 而 Docker:

其中一台专门用来跑 SS:我在一台新机器上先安装 Docker,然后登录我的 Dockerhub 账号,把自己的 ss 镜像拉下来,然后创建一个专门跑 ss 的容器,在跑的时候网络还要 host mode,然后把配置文件挂载进去,把日志目录挂载出来。现在回想起来,真有一种脱裤子放屁的感受。

于是后来也就没这么干了。直接裸装 ss,换 VPS 直接重复安装流程,发现流程竟然比 Docker 还简单。

另一台专门用来跑网站和一些乱七八糟的服务。因此上面的软件也就比上一台要复杂一些,nginx,db,业务 server 等等一大锅,因此经过一番折腾把它们都做成 dockerfile,并将有依赖的服务搞成 docker-compose 一键拉起。看似很酷炫,然而蛋疼的事情也经常发生:

  • 有些没有重定向到输出的 log,只能通过 docker log 去查看,结果发现从容器启动到现在的日志如黄河之水般倾泻而出,一下就把终端塞爆了
  • 默认情况下,docker 会直接对外暴露端口,而无视系统防火墙,具体我也写过文章来吐槽: 无视系统防火墙的 docker
  • Docker hub 构建一个镜像往往需要 10 分钟,可能是因为没交钱所以优先级比较低
  • Docker compose 在 down 时有莫名其妙的问题,往往会漏那么一两个 container 杀不掉,也没办法手动杀掉,怎么办?只能重启宿主机

于是这样折腾下来,发现自己的生产力不仅没有提高,反而常常会因为一些莫名其妙的问题搞掉一晚上。于是乎,VPS 上的去 Docker 化也提上日程。

跑到油管上看了今年的 DockerCon,发现 Docker 变成了 Moby?Docker 公司在将 Docker 拆分成各种 d 和 各种 kit 后,在行动上,将 Github 上原隶属于 Docker 组织的 Docker 项目, transfer 到了一个名为 Moby 的新组织下,并将项目重命名为 Moby。从此以后,Docker 这个关键字仅用于指代 Docker 公司的两个 docker 产品:Docker-CE 和 Docker-EE。从此“社区再无 Docker”。

Docker 公司的野心已经路人皆知:想用容器?自己用 Moby 拼吧 or 直接从 Docker 官网下载安装运行 Docker CE / Docker EE。你会选择哪一个?

不可否认的是,Docker 在生产环境中有不可取代的优势,但对于我个人的日常使用而言,已经成为鸡肋。是时候跟它说再见了。

也许有一天,我又会回到终端前,敲下 moby run...