早先与思科的朋友做技术交流,主要的议题就是Docker。随着该项目逐渐的成熟,越来越多的公司已经开始进行尝试。甚至有很多人说Docker的意义等于Java,那么下面由老钱对Docker 做一个比较全面的介绍。
Docker的主要作用是构建轻量级虚拟化环境,管理IT资源。与传统虚拟化最大的区别在于不需要Guest OS,以下两幅图可以清楚的表明二者的区别。
在互联网公司,前期主要使用Docker 构建持续集成环境,或者PaaS环境,著名如微信红包都是使用Docker作为部署环境。
Docker的核心技术为LXC 即Linux 轻量级容器
Docker的主要概念为镜像,容器,网络等,以下图片反应了Docker的工作方式:
所以如果一个公司想实施Docker 必须要部署自己的Docker 镜像私有管理库,大家可以使用Docker官方提供的Docker Registry。
一般在实际的工作中,Docker会与Jenkins,Git构建成持续集成的关键组件(测试)
如果是Web类应用的管理,Docker一般以集群的形式出现。
Docker生态有非常多的具体的项目:
- Swarm:Docker的集群管理组件
- Libnetwork:为官方的网络部署组件
- Docker Compose: 由Fig项目演化,为多Docker容器的管理项目
- Docker Engine: Docker容器运行项目
- Kitematic: Docker Desktop UI组件
大家如果感兴趣,可以对Docker进行深入的研究,有时间我也会做一个系列文章来分享Docker的源码等具体案例。
需要强调的是,Docker 的本质是为了互联网分布式基础构建提供了可能,这个是原有的虚拟化技术并不具备的具体能力,所以容器技术(不一定是Docker)是为了互联网技术架构的基础,如果只是为了测试那肯定是太Low了,所以作为Web、大数据等的架构师,也需要来了解Docker技术。