原创 | Docker入门基础系列之详谈Docker的容器Container
Posted 大数据躺过的坑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原创 | Docker入门基础系列之详谈Docker的容器Container相关的知识,希望对你有一定的参考价值。
资源干货第一时间送达!
【注意】: 2018年8月,进群需要缴费69元!!! 每过一个月,新增加的学员相应加10元。如2018年9月,进群需要缴费79元!!!
人生苦短,我愿分享。
交流分享开源精神,
汇聚于互联网和个人学习工作的精华干货知识,
一切来于互联网,反馈回互联网。
目前研究领域:
大数据、机器学习、深度学习、人工智能、数据挖掘、数据分析。
语言涉及:
Java、Scala、Python、Shell、Linux等 。
同时还涉及平常所使用的手机、电脑和
互联网上的使用技巧、问题和实用软件。
只要你一直关注和呆在群里,每天必须有收获。
本人个人博客:
http://www.cnblogs.com/zlslch/
http://www.cnblogs.com/lchzls/
http://www.cnblogs.com/sunnyDream/
本人个人Github:
https://github.com/zlslch/
有我最珍惜的你
给我最珍惜的你
—《九月哥每天在路上》
在本月(2018年8月)前面的博文里,我已经介绍了
说明:
Docker 利用容器来运行应用。
容器是从镜像创建的运行实例。
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
换言之,镜像是Docker运行容器的前提。
镜像( Image) 和容器( Container) 的关系, 就像是面向对象程序设计中
的 类 和 实例 一样, 镜像是静态的定义, 容器是镜像运行时的实体。 容器可以被创建、 启动、 停止、 删除、 暂停等。
Docker可以帮你构建和部署容器,你只需要把自己的应用程序或服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。
镜像是Docker生命周期中的构建或打包阶段,而容器则是启动或执行阶段。
总结起来,Docker容器就是:
(1)一个镜像格式;
(2)一系列标准的操作;
(3)一个执行环境。
容器的实质是进程, 但与直接在宿主执行的进程不同, 容器进程运行于属于自己的独立的 命名空间。 因此容器可以拥有自己的 root 文件系统、 自己的网络配置、自己的进程空间, 甚至自己的用户 ID 空间。 容器内的进程是运行在一个隔离的环境里, 使用起来, 就好像是在一个独立于宿主的系统下操作一样。 这种特性使得容器封装的应用比直接在宿主运行更加安全。 也因为这种隔离的特性, 很多人初学Docker 时常常会把容器和虚拟机搞混。
前面讲过镜像使用的是分层存储, 容器也是如此。 每一个容器运行时, 是以镜像为基础层, 在其上创建一个当前容器的存储层, 我们可以称这个为容器运行时读写而准备的存储层为容器存储层。
前面讲过镜像使用的是分层存储, 容器也是如此。 每一个容器运行时, 是以镜像为基础层。
容器存储层的生存周期和容器一样, 容器消亡时, 容器存储层也随之消亡。 因此,任何保存于容器存储层的信息都会随容器删除而丢失。
按照 Docker 最佳实践的要求, 容器不应该向其存储层内写入任何数据, 容器存储层要保持无状态化。 所有的文件写入操作, 都应该使用 数据卷( Volume) 、 或者绑定宿主目录, 在这些位置的读写会跳过容器存储层, 直接对宿主(或网络存储)发生读写, 其性能和稳定性更高。
数据卷的生存周期独立于容器, 容器消亡, 数据卷不会消亡。 因此, 使用数据卷后, 容器可以随意删除、 重新 run , 数据却不会丢失。
当Docker第一次启动一个容器时,初始的读写是空的。当文件系统发生变化时,这些变化都会应用到这一层上。比如,如果想要修改一个文件,这个文件首先会从该读写层下面的只读写复制到该读写层。该文件的只读版本依然存在,但是已经被读写层中的该文件副本所隐藏。
通常这种机制被称为写时复制(copy on write),这也是使Docker如此强大的技术之一。每个只读镜像层都是只读的,并且以后永远不会变化。当创建一个新容器时,Docker会构建出一个镜像栈,并在栈的最顶端添加一个读写层。这个读写层再加上其下面的镜像层以及一些配置数据,就构成了一个容器。
容器是可以修改的,它们都有自己的状态,并且是可以启动和停止的。容器的这种特点加上镜像分层框架,使我们可以快速构建镜像并运行包含我们自己的应用程序和服务的容器。
在功能上,Docker通过Libcontainer实现对容器生命周期的管理,信息的设置和查询,以及监控和通信等功能。而容器也是对镜像的完全诠释,容器以镜像为基础,同时又为镜像提供了一个标准的和隔离的执行环境。
在概念上,容器则很好地诠释了Docker集装箱的理念,集装箱可以存放任何货物,可以通过邮轮将货物运输到世界各地。运输集装箱的邮轮和装载卸载集装箱的码头都不用关心集装箱里的货物,这是一种标准的集装和运输方式。类似的,Docker的容器就是“软件界的集装箱”,它可以安装任意的软件和库文件,做任意的运行环境配置。开发及运维人员在转移和部署应用的时候,不用关心容器里装了什么软件,也不用了解它们是如何配置的。
而管理容器的Docker引擎同样不关心容器里的内容,它只要像码头工人一样让这个容器运行起来就可以了,就像所有其他容器那样。
容器不是一个新的概念,但是Docker在对容器进行封装后,与集装箱的概念对应起来,它之所以被称为“软件界的创新和革命”,是因为它会改变软件的开发、部署形态,降低成本,提高效率。Docker真正把容器推广到了全世界。
大家都在看
生活不易,唯有努力。欠下的账,迟早是要还的。
【注意】: 2018年7月,进群需要缴费59元!!! 每过一个月,新增加的学员相应加10元。如2018年8月,进群需要缴费69元!!!
觉得有用就转发分享一下吧
大家8月份的第三个周日愉快,与你前行
大数据和人工智能躺过的坑 (总群): 161156071
hadoop开发 : 276519852
大数据零基础入门 : 416348910
spark零基础入门: 285025652
hadoop零基础入门: 541092360
大数据开发 : 207591869
大数据手把手交流 : 201590535
大数据零基础收徒咨询 : 132603465
大数据内部收徒咨询群 : 469185229
Java SE交流技术群:后台回复“大数据躺过的坑之Java SE微信付费交流群”
本人个人博客:
http://www.cnblogs.com/zlslch/ http://www.cnblogs.com/lchzls/ http://www.cnblogs.com/sunnyDream/
本人个人Github:
https://github.com/zlslch/
【大数据和人工智能躺过的坑(总群)】
QQ技术交流群
一码不扫,何扫天下
如何加入大数据
大数据躺过的坑
一码不扫,何扫天下
如何加入人工智能
人工智能躺过的坑
一码不扫,何扫天下
本文版权归(大数据躺过的坑)作者和微信公众平台共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。 如果您认为这篇文章还不错或者有所收获,您可以通过下边的“打赏”功能 打赏我一杯咖啡【物质支持】,也可以点击右下角的【点赞】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力!
看完本文有收获?请转发分享给更多人
关注「大数据躺过的坑」,提升大神技能
欢迎新旧粉丝(撒花),我是大数据躺过的坑九月哥。大家对微信博文有什么问题都可以@我留言,我会尽快回复大家。希望以后可以和各位成为技术道友!
九月哥
超过10万+人正在关注
注意:此群是免费
注意:此群是59元(2018年7月份入群)
~等你来撩我哦~
解锁更多资源干货
记得替九月哥小助手把这波干货分享给小伙伴哦
不要忘记点赞,么么哒~
觉得不错,请点赞和留言
以上是关于原创 | Docker入门基础系列之详谈Docker的容器Container的主要内容,如果未能解决你的问题,请参考以下文章
原创 | 大数据入门基础系列之ZooKeeper如何实现分布式锁