一、简介1、了解Docker的前生LXC
LXC为linux Container的简写 。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性 。相当于C++中的NameSpace 。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求 。
与传统虚拟化技术相比,它的优势在于:
(1)与宿主机使用同一个内核,性能损耗小;
(2)不需要指令级模拟;
(3)不需要即时(Just-in-time)编译;
(4)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;
(5)避免了准虚拟化和系统调用替换中的复杂性;
(6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享 。
总结:Linux Container是一种轻量级的虚拟化的手段 。
Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制 。Linux Container有点像chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化 。
2、LXC与docker什么关系?
docker并不是LXC替代品,docker底层使用了LXC来实现,LXC将linux进程沙盒化,使得进程之间相互隔离,并且能够课哦内阁制各进程的资源分配 。
在LXC的基础之上,docker提供了一系列更强大的功能 。
3、什么是docker
docker是一个开源的应用容器引擎,基于Go语言开发并遵循了Apache2.0协议开源 。
docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux服务器,也可以实现虚拟化 。
容器是完全使用沙箱机制,相互之间不会有任何接口(类iphone的App),并且容器开销极其低 。
4、docker官方文档
https://docs.docker.com/
5、为什么docker越来越受欢迎
官方话语:
- 容器化越来越受欢迎,因为容器是:
- 灵活:即使是最复杂的应用也可以集装箱化 。
- 轻量级:容器利用并共享主机内核 。
- 可互换:您可以即时部署更新和升级 。
- 便携式:您可以在本地构建,部署到云,并在任何地方运行 。
- 可扩展:您可以增加并自动分发容器副本 。
- 可堆叠:您可以垂直和即时堆叠服务 。
- 镜像和容器(contalners)
容器是镜像的运行实例,当被运行时有镜像状态和用户进程,可以使用docker ps 查看 。
- 容器和虚拟机
虚拟机运行的是一个完成的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多 。
文章插图
6、docker版本
Docker Community Edition(CE)社区版
Enterprise Edition(EE) 商业版
7、docker和openstack的几项对比
文章插图
8、容器在内核中支持2种重要技术
docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)
1)namespaces 名称空间
文章插图
2)control Group 控制组
cgroup的特点是:
- cgroup的api以一个伪文件系统的实现方式,用户的程序可以通过文件系统实现cgroup的组件管理
- cgroup的组件管理操作单元可以细粒度到线程级别,另外用户可以创建和销毁cgroup,从而实现资源载分配和再利用
- 所有资源管理的功能都以子系统的方式实现,接口统一子任务创建之初与其父任务处于同一个cgroup的控制组
- 资源限制:可以对任务使用的资源总额进行限制
- 优先级分配:通过分配的cpu时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行优先级
推荐阅读
- |野钓:钓鱼小妙招详解
- 如何基于 MySQL 主从模式搭建上万并发的系统架构?
- 搞明白企业中台架构其实很简单
- 大型项目前端架构浅谈
- 大型网站技术架构负载均衡技术介绍
- 推荐一款nginx+redis+ehcache高并发与高可用缓存架构
- Redis 核心原理和架构
- 中等收入|偏理科怎么选专业?30个热门理工专业逐一详解(下)
- 高级茶艺师详解普洱茶的存放方法
- CentOS7.5下通过Docker快速搭建WordPress