一 什么是Docker
1. 什么是Docker?
Docker是基于Go语言实现的开源容器项目。Docker的构想是要实现“Build,Ship and Run Any App, Anywhere”, 即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件“一次封装,到处运行”的目的。这里的应用组件,既可以是一个Web应用、一个编译环境,也可以是一套数据平台服务,甚至是一个操作系统或集群。
二 为什么要使用Docker?
1. Docker容器虚拟化的好处
举例子,搭建一个LAMP环境:
传统的做法是:
- 安装Apache,MySQL,PHP以及它们各自运行所依赖的环境;
- 对环境进行配置,包括创建用户,配置参数等;
- 进行功能测试,看看是否工作正常;如果不正常进行调试追踪
- ……
应用越多,越难处理;一旦服务器进行迁移,就要重新部署;这些琐碎的工作极大地降低了工作效率。究其根源,是这些应用直接运行在底层操作系统上,无法保证同一份应用在不同的环境中行为一致。
使用Docker:
通过容器打包应用,解耦应用和运行平台。迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否是同一类型的平台。
2. Docker在开发和运维中的优势
在开发和运维中,具有如下几个方面的优势:
- 更快速的交付和部署
- 更高效的资源利用;Docker是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。
- 更轻松的迁移和拓展;Docker容器几乎可以在任意的平台上运行
- 更简单的更新管理;使用Dockerfile。只需要小小的配置修改,就可以替代以往大量的更新工作。
3. Docker与虚拟机
与虚拟机比较,Docker的优势:
- Docker容器很快,启动和停止可以在秒级实现
- Docker容器对系统资源需求很少
- Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新。
- Docker中的应用获得的是接近原生的运行性能
三 核心概念
Docker的大部分操作都围绕着它的三大核心概念——镜像、容器和仓库而展开
1. Docker镜像
Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。例如,一个镜像可以只包含一个基本的操作系统环境,里面仅安装了Apache,可以把它称为一个Apache镜像。
2. Docker容器
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离、互不可见的。
可以把容器看做事一个简易版的linux系统环境(包括root用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子。
注:镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。
3. Docker仓库
Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。
Docker仓库不是仓库注册服务器(Registry),仓库注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来区分。
Docker仓库分为空开仓库(Public)和私有仓库(Private)。目前最大的公开仓库是官方提供的Docker Hub,其中存放了数量庞大的镜像供用户下载。
用户创建了自己的镜像之后就可以使用push命令将它上传到指定的公有或者私有仓库。这样用户下次再另一台机器上使用该镜像时,只需要从将其从仓库上pull下来就可以了。
四 小结
无论是系统管理员、应用开发人员、测试人员以及运维管理人员,都应该尽快掌握Docker,尽早享受其带来的巨大便利。
五 相关链接
- Docker官方主页: https://www.docker.com
- Docker官方博客:https://blog.docker.com
- Docker官方文档:https://docs.docker.com
- Docker Hub:https://hub.docker.com/
- Dockerfile 参考:https://docs.docker.com/engine/reference/builder/
- Dockerfile 最佳实践:https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/
0 条评论
来做第一个留言的人吧!