文章插图
【终于有人把 Docker 讲清楚了】作者 :乐章
一、简介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越来越受欢迎
官方话语:
- 容器化越来越受欢迎 , 因为容器是:
- 灵活:即使是最复杂的应用也可以集装箱化 。
- 轻量级:容器利用并共享主机9内核 。
- 可互换:您可以即时部署更新和升级 。
- 便携式:您可以在本地构建 , 部署到云 , 并在任何地方运行 。
- 可扩展:您可以增加并自动分发容器副本 。
- 可堆叠:您可以垂直和即时堆叠服务 。
- 镜像和容器(contalners)
通过镜像启动一个容器 , 一个镜像是一个可执行的包 , 其中包括运行应用程序所需要的所有内容包含代码 , 运行时间 , 库、环境变量、和配置文件 。
容器是镜像的运行实例 , 当被运行时有镜像状态和用户进程 , 可以使用docker ps 查看 。
- 容器和虚拟机
容器时在linux上本机运行 , 并与其他容器共享主机的内核 , 它运行的一个独立的进程 , 不占用其他任何可执行文件的内存 , 非常轻量 。
虚拟机运行的是一个完成的操作系统 , 通过虚拟机管理程序对主机资源进行虚拟访问 , 相比之下需要的资源更多 。
文章插图
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的特点是: