网站大量收购闲置独家精品文档,联系QQ:2885784924

docker技术(详解) _原创精品文档.pdfVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

虚拟化新技术:Docker技术

对于用户来说,可能一开始在不了解的情况下会对容器报以拒绝的态度,但是在尝到容器的

甜头、体验到它的强大性能之后,相信大家最终是无法抵挡其魅力的。容器技术能够解决IT

业目前面临的很多问题,而且优势也很明显,比如说:

1、容器具有不可变的特性。

容器将操作系统、程序库、配置文件、路径和应用程序打包在一起运行,也就是说,我们在

做QA测试的时候整个镜像是什么样,投入到产品环境以后就是什么样,其性能不会有任何

差距。

2、容器都非常轻量。

单个容器的内存占用很小,不像其他进程动辄占用上万MB的内存空间,容器只会给主进程

分配内存,可以有效降低系统开销。

3、容器的速度更快。

虚拟机的启动时间一般都在分钟级,容器的启动速度可以达到秒级,启动容器就跟启动linux

进程一样快。虽然容器的好处这么多,但是有很多用户还不了解,还认为容器跟一般的虚拟

机没什么差别。实际上,容器是可销毁的,这是容器跟虚拟机之间最大的差别。容器的存在

周期很短,只要用户使用完毕,就可以立即销毁容器,所以用“朝生暮死”来形容也不算过

分。

在对容器进行使用和维护时,我们应该充分利用容器的这个特性,不要再把容器当成一般的

虚拟机来看待,不然就真的大材小用了。在实际使用过程中,为了最大限度地发挥容器的优

势,有些错误还是少犯为妙。我总结出了下面几个要点供大家参考,在跑容器的时候大家最

好还是尽量遵照这几条原则:

1)

不要将数据储存在容器中。

容器随时都可以停止、销毁或迁移,比方说,一个容器里运行的应用版本是1.0,我们分分

钟就可以把这个应用升级到1.1,同时还不会对数据造成任何影响。所以如果用户想要存数

据的话,最好是用数据卷来存储。不过在用卷存数据的时候大家还是要注意一点,如果有两

个容器共用一个数据卷,都往里面写数据的话,是有可能造成程序崩溃的。我们在设计应用

程序的时候应该考虑到这一点,为保万无一失,应用程序应该具备特定的机制,以确保在往

共享数据存储区写入数据的时候不会出错。

2)不要把应用程序分块交付。

在部分用户看来,容器跟虚拟机没什么两样,所以有些人往往会把应用程序部署到当前运行

的若干个容器中。这种做法在开发阶段没有太大的问题,因为做开发的时候我们会很频繁地

进行部署和调试,但是到了持续交付(CD)阶段,下一步就是QA测试和正式投产了,这种

做法就不太适合了。在这一阶段,我们应该充分考虑到容器的不可变特性,最好是将应用程

序打包到一个镜像中交付。

3)不要把镜像体积建得很大。

镜像越大,就越难发布。镜像中只包含必要的文件和library就可以了,能让应用或者进程

运行起来就行。千万不要在镜像中安装些没必要的东西,在构建镜像的时候要避免使用yum

这种update命令,免得系统自动下载很多不相干的文件到新镜像层中。

4)

建镜像的时候不要只建一层。

大家都知道,Docker的文件系统是分层的,在建镜像的时候我们应该这么建,将操作系统

单独建一层,作为基础镜像,然后用户名定义文件、运行时安装环境、配置文件都要分别建

一层镜像,最后才是应用镜像层。这么做的话,我们以后重建、管理以及发布镜像的时候就

要轻省得多了。

5)不要把本地运行的容器转成镜像。

换句话说就是创建镜像的时候不要用“dockercommit”命令来创建。用这种办法建镜像是

完全不可取的,因为这种办法是不能重复的。我们在建镜像的时候应该从Dockerfile创建,

或者用其他S2I(从源文件构建镜像)的方式来创建,这样镜像才具有可再生性,而且如果

我们把镜像存在git之类提供版本控制能的系统里的话,还可以对Dockerfile的改动进行跟

踪。

6)给镜像打tag的时候不要只打“latest”。

latest其实就相当于Maven里头的“快照”。因为容器的文件系统是分层的,我们最好是给

镜像多打几个tag。如果只有latest的话,可能过段时间我们再来运行应用程序的时候就发

现程序运行不起来了,因为应用的父层(就是Dockerfile里面的跟在FROM命令后面的那一

层)被更新的版本覆盖了,而新版本又不能向下兼容,还有可能就是从buildcache里面取

镜像的时候取到了错的“latest”镜像。在产品环境中部署容器的时候也要避免使用latest,

不然容易造成无法跟踪记录镜像版本的问题。

7)不要在单个容器里面运行多个进程。

容器本来就是用来运行单个应用的(比如httpdaemon,应用服务器,数据库等等),如果我

文档评论(0)

191****9459 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档