我理解的docker
来源:互联网 发布:mysql查询语句大全实例 编辑:程序博客网 时间:2024/06/07 03:10
docker是轻量级操作系统虚拟化的解决方案。
包括 镜像,容器,仓库,数据卷,链接 等。
仓库是存放镜像的地方,我们可以把自己的镜像pull下来,也可以push上去。
镜像 中有一个json,指定了从该镜像运行的容器的特征。 镜像实际上由一层一层的文件系统组成。
容器是 在镜像的基础上加了一层可写层。
数据卷是分离应用和数据的工具,我们可以把容器中的目录与宿主机的目录进行一一映射。 这样在容器关闭后 依然保有数据。
链接是 在容器启动时候被分配的一个随机的私有ip,它提供了容器之间相互通讯的渠道。
docker 是通过 namespace,cgroups,unionFS,来实现上面的四个功能的。
namespace 是隔离了每个容器,使每个容器有自己的命名空间。 命名空间实现了进程和进程之间使用资源的隔离。而且每个进程都可以当一台独立的主机,在自己的内部开启 不 同的进程。
cgroups 对共享资源(CPU io) 进行隔离 限制 审计。
unionfs 是一种分层的 轻量级的 高性能的文件系统。 docker通过aufs实现了它。
镜像的启动 首先会加载 bootfs 通过bootfsloader来加载 内核,当内核加载成功后, bootfs会被卸载掉。
之后会加载rootfs(根目录系统) 第一层 rootfs是 操作系统。这一层是只读的
之后会加载别的rootfs 直到加载完毕。
这些rootfs都是只读的,而且他们因为是增量的增加目录,所以节省了容量。
在只读层读完之后,会在最外层加一个可读可写层,随后该镜像变为一个容器,我们可以在容器中启动我们的应用。
最外层如果对底层rootfs进行修改了, 实际上是把底层rootfs中文件copy到了 rw层,进行的修改。随后底层的 文件将会被隐藏(copy on write).......
大致了解的就是这样。。。。等学的更深入了 再做修改。
可能还有不对的地方。
资料:
http://www.cnblogs.com/wish123/p/5573098.html
http://dockone.io/article/783
http://www.infoq.com/cn/articles/analysis-of-docker-file-system-aufs-and-devicemapper/
- 我理解的docker
- 我理解的docker
- docker的理解
- 转载docker的理解
- docker的通俗理解
- Docker的理解
- Docker 概念的理解
- 我的docker笔记
- docker我的常用命令
- Docker小技巧(四)——基础概念我的理解
- 理解Docker的网络模式
- 对Docker的一点理解
- 我的Docker学习笔记
- 我常用的docker命令
- 我的docker常用命令清单
- 我的Docker笔记1
- 我的docker 学习笔记
- 我创建的docker容器
- 删除list中某个对象属性为空的对象使用迭代器
- Oracle Outline总结
- 34.第三方支付
- ubuntu安装虚拟机win10
- 重置2012开发环境
- 我理解的docker
- net程序连接oracle数据库安装oracle客户端
- Oracle 存储过程快速入门
- Oracle 10g (10.2.0.4.0) 新建数据库实例85%卡住, OracleDBConsoleorcl无法启动 EM创建问题修复
- yii2.0 文件上传
- Oracle dmp文件损坏恢复案例
- yii2下使用自带类发送邮件
- sklearn 下的流行学习(Manifold Learning)—— sklearn.manifold
- java对象和xml之间转换--Jaxb