Libcontainer

Docker基础(1) 原理篇

对着背影说爱祢 提交于 2020-02-27 14:09:44
Docker是什么 Docker的构成 Docker的分层和写时拷贝策略 Docker与主流虚拟机的区别 Docker镜像与容器的关系 镜像的变更管理 ### Docker是什么 Docker是一个开源的应用容器引擎。它的理念是“Buildonce, Run anywhere, Configure once, Run anything”,这与Java提出的“Write Once, Run Anywhere”有异曲同工之妙。 Java与Docker在面对平台移植方面的问题时,采用了类似的解决方案。Java语言使用虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成可以在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 类似地,Docker使用容器引擎解决平台依赖问题,它在每台宿主机上都启动一个Docker的守护进程,守护进程屏蔽了与具体平台相关的信息,对上层应用提供统一的接口。这样,Docker化的应用,就可以在多个平台下运行,Docker会针对不同的平台,解析给对应的执行驱动、存储驱动和网络驱动去执行。 这里说的平台主要针对不同的Linux发行版,因为Docker的实现需要用到Linux的cgroups、namespaces等特性,所以目前只能运行在Linux环境下,要想在Windows和Mac上使用Docker,则要采用虚拟机的方式。

Docker操作实践(2):Docker的安装及架构介绍

江枫思渺然 提交于 2019-11-30 10:56:53
上篇我们分享了一下容器的演进,然后用进程隔离、文件隔离、namespace、cgroups、libcontainer的几个角度展开容器的本质,本篇文章会对Docker的版本安装进行讲解并简介Docker的技术架构。 如果你还没看过前面的内容:可以点击 《容器的本质是什么?容器从何而来?》 Docker版本 Docker在1.13之后,采用时间线作为版本号标识。Docker的版本分为社区版(CE)和企业版(EE)。企业版会提供额外的收费服务,比如包括一些经过官方认证的插件、容器等。 社区版又分为三种版本: 稳定版本: stable。一般我们使用此版本。 预发布版: test 待发布版: nightly Docker安装 1.卸载docker 卸载主机上已有的docker版本 2. 安装前准备 配置yum 1. 安装yum工具及devicemapper存储驱动 2. 配置yum yum makecache的过程中,可以看到可以安装使用的包是dockerr-ce-stable版本,也就是repo中默认只开启stable仓库。 此时如果我们需要安装test或nightly版本,可以使用yum-config-manger –enable docker-ce-test开启此仓库。 安装docker 可以使用yum list查看仓库中docker的版本: 1. 安装docker 2.

太全了|万字详解Docker架构原理、功能及使用

余生长醉 提交于 2019-11-27 21:37:46
一、简介 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进程沙盒化,使得进程之间相互隔离