强大的 docker


做过多年软件开发的人一定被各种依赖折磨过.

从最简单的库的依赖, 到高层点的框架的依赖, 再到更高层的操作系统, 数据库等环境的依赖, 甚至网络, 硬件等合理抽象下都可以看成依赖.

库的依赖每个语言有各自的库管理和分发工具, 框架级别的依赖可以打包或者使用库依赖管理工具.

如何对操作系统, 数据库等外部环境依赖进行隔离呢? 有三种解决方案.

  1. 使用脚本等工具创建一致的外部环境, 如新建一个相同版本的操作系统, 在安装相同版本的数据库, 语言等.
  2. 类似于1, 但借助虚拟机, 使得操作更容易, 如 vagrant.
  3. 借助于可增量读写的文件系统, 将外部环境依赖持久化到镜像,从而可以分发.

docker 和 1, 2 的本质区别是 docker 是真正的分发可重用, 而1, 2是借助工具重建一致的开发环境.

即使一个普通的开发者, 一般本地开发, 部署到远程虚拟机, 那至少也需要折腾2次, 实在费时费力. 而借助 docker 一切问题都迎刃而解. 每个开发者都应该去试下 docker.