Docker使用Google公司推出的Go语言进行开发实现(这也是Go大火的原因之一),基于Linux内核的cgroup,namespace,以及AUFS类的Union FS等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。 Docker在linux容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。 Docker技术的三大核心概念,分别是: 镜像(Image) 容器(Container) 仓库(Repository) 用程序员最能理解的话解释一下:镜像就像一个类或者源代码,构建时的东西,容器是对象或者系统,运行时的东西,仓库就是git代码库,这个没什么好解释的。
说到使用Docker的好处就不得不说软件开发过程中最麻烦的事情——环境配置。从我们学习一门语言开始,我们遇到的第一件难题就是配置环境,很多新手都会被这个拦路虎给难倒,相信很多开发者都有类似的经历。这个困难会陪伴程序员一生,比如:github上下载个开源代码运行起来要配置好环境,遇到文档全,配置不多还能忍受。要是遇到一些随心的开源项目,部署起来要折腾很久。还有工作中的系统变更,新申请了一台服务器要根据系统部署要求把开发时配置环境的工作再重新做一遍,如果有测试环境、UAT环境、正式环境等多套环境那就要重复多次,开发人员深受其苦。以致于我们经常听到开发者会说:“它在我的机器上是正常的(It works on my machine)”…… 以前,在腾讯时有些系统需要项目外包,开发环境要在对方公司部署一套和腾讯内部开发大致一样的开发环境。当时的做法是用虚拟机来解决的,虚拟机的缺点太多了。
Docker 在linux容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。 linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。由于linux容器是进程级别的,相比虚拟机有很多优势。
综上所述,Docker结合我们实际的工作场景,我总结有以下几个地方可以使用:
Docker有很多创建项目的方法,比如Dockerfile、docker-compose、docker swarm、K8s等待…… 这些大家有兴趣可以自己去学习了解一下,我这里只简单介绍下最原始的方法。 一般使用Docker开发的常规流程如下:
参考:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。