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

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

ID:16200687

大小:91.63 KB

页数:4页

时间:2018-08-08

8 个你可能不知道的 docker 知识_第1页
8 个你可能不知道的 docker 知识_第2页
8 个你可能不知道的 docker 知识_第3页
8 个你可能不知道的 docker 知识_第4页
资源描述:

《8 个你可能不知道的 docker 知识》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、8个你可能不知道的Docker知识自从上世纪90年代硬件虚拟化被主流的技术广泛普及之后,对数据中心而言,发生的最大的变革莫过于容器和容器管理工具,例如:Docker。在过去的一年内,Docker技术已经逐渐走向成熟,并且推动了大型初创公司例如Twitter和Airbnb的发展,甚至在银行、连锁超市、甚至NASA的数据中心都赢得了一席之地。当我几年前第一次直到Docker的时候,我还对Docker的未来持怀疑的态度,我认为他们是把以前的Linux容器的概念拿出来包装了一番推向市场。但是使用Docker成功进行了几个项目例

2、如Spantree之后,我改变了我的看法:Docker帮助我们节省了大量的时间和经历,并且已经成为我们技术团队中不可或缺的工具。GitHub上面每天都会催生出各式各样的工具、形态各异的语言和千奇百怪的概念。如果你和我一样,没有时间去把他们全部都测试一遍,甚至没有时间去亲自测试Docker,那么你可以看一下我的这篇文章:我将会用我们在Docker中总结的经验来告诉你什么是Docker、为什么Docker会这么火。Docker是容器管理工具Docker是一个轻量级、便携式、与外界隔离的容器,也是一个可以在容器中很方便地构建

3、、传输、运行应用的引擎。和传统的虚拟化技术不同的是,Docker引擎并不虚拟出一台虚拟机,而是直接使用宿主机的内核和硬件,直接在宿主机上运行容器内应用。也正是得益于此,Docker容器内运行的应用和宿主机上运行的应用性能差距几乎可以忽略不计。但是Docker本身并不是一个容器系统,而是一个基于原有的容器化工具LXC用来创建虚拟环境的工具。类似LXC的工具已经在生产环境中使用多年,Docker则基于此提供了更加友好的镜像管理工具和部署工具。Docker不是虚拟化引擎Docker第一次发布的时候,很多人都拿Docker和虚

4、拟机VMware、KVM和VirtualBox比较。尽管从功能上看,Docker和虚拟化技术致力于解决的问题都差不多,但是Docker却是采取了另一种非常不同的方式。虚拟机是虚拟出一套硬件,虚拟机的系统进行的磁盘操作,其实都是在对虚拟出来的磁盘进行操作。当运行CPU密集型的任务时,是虚拟机把虚拟系统里的CPU指令“翻译”成宿主机的CPU指令并进行执行。两个磁盘层,两个处理器调度器,两个操作系统消耗的内存,所有虚拟出的这些都会带来相当多的性能损失,一台虚拟机所消耗的硬件资源和对应的硬件相当,一台主机上跑太多的虚拟机之后就

5、会过载。而Docker就没有这种顾虑。Docker运行应用采取的是“容器”的解决方案:使用namespace和CGroup进行资源限制,和宿主机共享内核,不虚拟磁盘,所有的容器磁盘操作其实都是对/var/lib/docker/的操作。简言之,Docker其实只是在宿主机中运行了一个受到限制的应用程序。从上面不难看出,容器和虚拟机的概念并不相同,容器也并不能取代虚拟机。在容器力所不能及的地方,虚拟机可以大显身手。例如:宿主机是Linux,只能通过虚拟机运行Windows,Docker便无法做到。再例如,宿主机是Windo

6、ws,Windows并不能直接运行Docker,Windows上的Docker其实是运行在VirtualBox虚拟机里的。Docker使用层级的文件系统前面提到过,Docker和现有容器技术LXC等相比,优势之一就是Docker提供了镜像管理。对于Docker而言,镜像是一个静态的、只读的容器文件系统的快照。然而不仅如此,Docker中所有的磁盘操作都是对特定的Copy-On-Write文件系统进行的。下面通过一个例子解释一下这个问题。例如我们要建立一个容器运行JAVAWeb应用,那么我们应该使用一个已经安装了JAVA

7、的镜像。在Dockerfile(一个用于生成镜像的指令文件)中,应该指明“基于JAVA镜像”,这样Docker就会去DockerHubRegistry上下载提前构建好的JAVA镜像。然后再Dockerfile中指明下载并解压ApacheTomcat软件到/opt/tomcat文件夹中。这条命令并不会对原有的JAVA镜像产生任何影响,而仅仅是在原有镜像上面添加了一个改动层。当一个容器启动时,容器内的所有改动层都会启动,容器会从第一层中运行/usr/bin/java命令,并且调用另外一层中的/opt/tomcat/bin命

8、令。实际上,Dockerfile中每一条指令都会产生一个新的改动层,即便只有一个文件被改动。如果用过Git就能更清楚地认识这一点,每条指令就像是每次commit,都会留下记录。但是对于Docker来说,这种文件系统提供了更大的灵活性,也可以更方便地管理应用程序。我们Spantree的团队有一个自己维护的含有Tomcat的镜像。发布

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。