docker筑基篇-00-docker简介
1 docker简介
docker是一个能够把开发的应用程序部署到容器的开源引擎。
具体的其他信息就不多说了,有兴趣请看一下链接:
2 docker组件
2.1 客户端和服务端
如上图所示,docker是一个C/S架构的程序。docker客户端只需向docker服务端守护进程发出请求并等待返回结果即可。
docker提供了命令行工具docker
,和诸多的RestAPI
。
当然,客户端和服务端不一定要在同一个主机上。
2.2 镜像
镜像,这是个抽象又满天飞的概念。
在docker里,镜像(image)和容器(container)关系非常紧密。image就相当于面向对象中的类,container就类似于对象了。
也就是说镜像是容器的模板,容器是镜像的实例。
也有人这么说:镜像是容器的源代码。
2.3 Registry
docker用Registry来保存创建的镜像。Registry分为私有和公有两类。
公有的Registry如DockerHub、DaoCloud、网易雀巢等。
2.4 容器
容器是:
- 镜像的实例
- 运行环境
- 虚拟子系统
- 沙箱/沙盒
3 docker的特点
- 文件系统隔离
- 每个容器都有自己的root文件系统
- 进程隔离
- 每个容器都运行在自己的进行环境中
- 网络隔离
- 容器间的虚拟网络接口和IP地址是分开的
- 资源隔离
- 使用CGroups将CPU和内存资源分配给每个docker容器
- 写时复制
- 文件系统都是通过写时复制创建的,文件系统是分层的。占用空间更少。
4 和传统虚拟化技术的对比
比较项目 | 传统虚拟化 | docker虚拟化 |
---|---|---|
创建速度 | 很慢 | 很快 |
性能影响 | 通过对硬件的模拟,增加了系统调用链路的环节。有性能损耗。 | 共享内核,影响甚微 |
资源消耗 | 很大 | 很小,单个机器可以轻易创建多个容器 |
兼容性 | 支持Linux,Mac,Windows等系统 | 仅支持内核所支持的系统 |
5 docker守护进程
docker(包括守护进程和客户端进程)是以root的身份来运行的,因为docker所执行的一些操作如挂在文件系统等是普通用户无法完成的。