浅析Docker的基础和应用场景

1、什么是LXC

LXC为Linux Container的简写。Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,它的优势在于:

与宿主机使用同一个内核,性能损耗小;

不需要指令级模拟;

不需要即时(Just-in-time)编译;

容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;

避免了准虚拟化和系统调用替换中的复杂性;

轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。

总结:Linux Container是一种轻量级的虚拟化的手段。

2、什么是Docker

Docker是Docker.inc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在GitHub上,基于Go语言并遵从Apache2.0协议开源(可以商业)。

Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。

Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机VM额外的操作系统开销,提高资源利用率。

下面图比较了Docker和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复制本地主机的操作系统,而传统方式则是在硬件层面实现。

Docker的工作模式

学习Docker的源码并不是一个枯燥的过程,反而可以从中理解Docker架构的设计原理。

Docker对使用者来讲是一个C/S模式的架构,而Docker的后端是一个非常松耦合的架构,模块各司其职,并有机组合,支撑Docker的运行。

用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。

而DockerDaemon作为Docker架构中的主体部分,首先提供Server的功能使其可以接受Docker Client的请求;而后Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在。

Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动graphdriver将下载镜像以Graph的形式存储;当需要为Docker创建网络环境时,通过网络管理驱动networkdriver创建并配置Docker容器网络环境;当需要限制Docker容器运行资源或执行用户指令等操作时,则通过execdriver来完成。而libcontainer是一项独立的容器管理包,networkdriver以及execdriver都是通过libcontainer来实现具体对容器进行的操作。当执行完运行容器的命令后,一个实际的Docker容器就处于运行状态,该容器拥有独立的文件系统,独立并且安全的运行环境等。

CLI交互模型

RemoteAPI交互模型

4、Docker八中应用场景

1、简化配置,统一配置,通过镜像快速启动(Simplifying)

2、代码流水线管理,开发环境->测试环境->预生产环境->灰度发布->正式发布,docker在这里实现了快速迁移(Code Oioeline Management)

3、开发效率,对开发人员,有了镜像,直接启动容器即可(DeveloperProductivity)

4、应用隔离,相对于虚拟机的完全隔离会占用资源,docker会比较节约资源(App lsolation)

5、服务器整合,一台服务器跑多个docker容器,提高服务器的利用率(ServerConsolidation)

6、调试能力,debug调试(Debugging Capabilties)

7、多租户,一个租户多个用户,类似于阿里公有云的一个project下多个用户(Multi-tenancy)

8、快速部署,不需要启动操作系统,实现秒级部署(Rapid Deplovment)

5、Docker八中开发模式

1.共享基础容器

2.共享卷开发容器

3.开发工具容器

4.不同环境下测试容器

5.构建容器

6.安装容器

7.盒子中默认服务容器

8.基础设施/粘合剂容器

6、Docker九个基本事实

1.容器不同于虚拟机

2.容器不如虚拟机来得成熟

3.容器可以在几分之一秒内启动

4.容器已在大规模环境证明了自身的价值

5.IT人员称容器为轻量级

6.容器引发了安全问题

7.Docker已成为容器的代名词,但它不是唯一的提供者

8.容器能节省IT人力,加快更新

9.容器仍面临一些没有解决的问题

7、使用Docker理由

作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式具有众多的优势。

首先,Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。其次,Docker对系统资源的利用率很低,一台主机上可以同时运行数千个Docker容器。

至于为什么要使用Docker:

  1. 技术储备

相对大公司这个非常重要,如果你们都在用,他们不用就落后了,等到完全成熟以后就跟不上了。

  1. 无技术栈和技术债

没有任何Openstack或者saltstack,服务down了就down了,所有的服务都是松耦合。

3、跟上潮流(提升自我,装逼)

面试的时候大家都会Docker,你不会是不是落后了。

4、符合当前业务

虽然Docker很优秀,但是,大多数处在第二种状态,很少有符合自己的业务

原文发布于微信公众号 - 网络安全社区悦信安(yuexin_an)

原文发表时间:2017-10-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏blackpiglet

OpenStack 上部署 Kubernetes 方案对比

  目前在 OpenStack 上部署 Kubernetes 有多种方式,本文会先简要描述每种方案,再使用图标进行简单的对比,并尝试给出个人认为的较优方案。

4492
来自专栏云计算D1net

OpenStack支持哪些容器编排引擎?

组织通常会使用容器编排工具,有时称为编排引擎,来部署、扩展和连接不同的容器技术组件。这些编排工具还帮助企业监控容器实例,从而缓解容器蔓延到整个企业。 ? Ope...

3694
来自专栏我是攻城师

8 个你可能不知道的 Docker 知识

3013
来自专栏A周立SpringCloud

Docker 17.03系列教程(一)Docker EE/Docker CE简介与版本规划

近日,Docker发布了Docker 17.03。进入Docker 17时代后,Docker分成了两个版本:Docker EE和Docker CE,即:企业版(...

3267
来自专栏云加头条

【干货合集】Docker快速入门与进阶

Docker 在众多技术中,绝对是当红炸子鸡。这年头,如果你不懂一点容器,不学一些Docker,还怎么出去跟人炫耀技术?Docker 也是云计算技术中较为热门的...

11.7K7
来自专栏bdcn

CoreOS那些事之Rkt容器尝鲜(上) 转

从CoreOS发布Rocket应用容器项目到现在,已经过去半年时间了。为了增加辨识度,项目更名为了Rkt。在沉寂了许久后,最近又开始在社区里出现了一些新鲜的声音...

3812
来自专栏CSDN技术头条

谈DevOps中的容器安全

【编者按】对比虚拟机,Docker在体量等方面拥有显著的优势。然而,当DevOps享受Docker带来扩展性、资源利用率和弹性提升的同时,其所面临的安全隐患同样...

2086
来自专栏达摩兵的技术空间

docker入门学习(1)

1、简化程序: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docke...

1132
来自专栏大魏分享(微信公众号:david-share)

如何将Openshift对接CloudForms云管平台?

Openshift对接云管平台的目的 Openshift是红帽一款优秀的PaaS解决方案。目前国内的行业客户,如金融、电信、制造等,在云平台的构建上,逐渐从Ia...

4225
来自专栏云计算D1net

8个你可能不知道的Docker知识

自从上世纪 90 年代硬件虚拟化被主流的技术广泛普及之后,对数据中心而言,发生的最大的变革莫过于容器和容器管理工具,例如:Docker。在过去的一年内,Dock...

3705

扫码关注云+社区

领取腾讯云代金券