1、在linux kernel layer 上可以构造N个userSpace;
2、程序运行的时候只是关注userspace
3、依靠多进程的方式实现分布式,每个进程作为一台机器,对于应用程序来说是完全透明的。
4、
传动虚拟化 | 容器虚拟化 | |
创建速度 | 很慢 | 非常快 |
性能影响 | 模拟硬件 | 共享kernel,几乎没有你能损耗 |
资源消耗 | 很大 | 很小,一台机器可以轻松的创建多个container |
操作系统覆盖 | 支持linxu windows等 | 仅仅支持kernel所支持的OS |
5、windows创建docker,可以用boot2Docker工具
6、docker的容器技术是对内核中的cgourps、namespace等内容的使用
7、不同的docker容器之间如何通信,不同的容器都有自己的独立的内存和网络资源;内核资源的限制cgroups 资源控制机制。
namespace :帮我们完成了容器隔离
cgoups:帮我们做资源隔离,限制容器的资源使用
chroot:文件系统的隔离
linux内核提供的限制,记录和隔离进程组所使用的资源,由Google的工程师提出,后拉被整合到kernel
通过不同的子系统(blkio,cpu,cpuacct等)来实现对不同资源使用的控制和记录。
docker对cpu还有不足
8、pid,容器有自己独立的进程表和1号进程。fork机制
net,容器有自己的独立的network info(一般都是桥连)
ipc,在ipc通信的时候,需要加入额外的信息来表示进程
mnt,每个容器都有自己唯一的目录挂载
utc,每个容器都有独立的hostname和domain
9、docker的文件系统
advanced multi layer unification filesystem
可以实现把多个不同目录的内容合并在一起
允许read-only和read-write目录并存
10、docker使用aufs来实现分层的文件系统管理
只读部分定义为image(镜像),可写部分是container
image类似一个单链表系统,每个image包含一个指向parent image的指针
没有parent image 的image 是base image
11、一个container只做一件事情。
12、libcontainer、libchan、libswarm
libcontainer:一个封装器,docker依赖这个库,里面包含一些底层的东西,包括资源控制之类的,目标是为将来的跨平台。
13、dockerfile 帮你构建镜像。build之后别人就可以使用了
14、kubernetes
操作对象
功能组件
功能特性
15、consul 类似服务发现
多台机器构建docker,通过服务发现构建服务集群
提供了api,
可以进行服务分类,
提供很好的rest接口,
还有服务监控
16、fig可以做单机上的docker集群