Docker技术入门与实战第2版.html.pdf

上传人:紫竹语嫣 文档编号:5514144 上传时间:2020-05-27 格式:PDF 页数:272 大小:35.21MB
返回 下载 相关 举报
Docker技术入门与实战第2版.html.pdf_第1页
第1页 / 共272页
Docker技术入门与实战第2版.html.pdf_第2页
第2页 / 共272页
Docker技术入门与实战第2版.html.pdf_第3页
第3页 / 共272页
Docker技术入门与实战第2版.html.pdf_第4页
第4页 / 共272页
Docker技术入门与实战第2版.html.pdf_第5页
第5页 / 共272页
点击查看更多>>
资源描述

《Docker技术入门与实战第2版.html.pdf》由会员分享,可在线阅读,更多相关《Docker技术入门与实战第2版.html.pdf(272页珍藏版)》请在三一文库上搜索。

1、第2版前言 自云计算步入市场算起,新一代计算技术刚好走过了第一个十年。 在过去十年里,围绕计算、存储、网络三大基础服务,围绕敏捷服务和规模处理两大核心诉求,新的概念、模式和工具争相涌现。这些创新的开源技术成果,提高了整个信息产业的生产效率,降低了 应用信息技术的门槛,让“互联网+”成为可能。 如果说软件定义网络(SDN)和网络功能虚拟化(NFV)让互联网络的虚拟化进入了崭新的阶段,那么容器技术的出现,毫无疑问称得上计算虚拟化技术的又一大创新。从Linux Container到 Docker,看似是计算技术发展的一小步,却是极为重要的历史性突破。容器带来的不仅仅是技术体验上的改进,更多的是新的开

2、发模式、新的应用场景、新的业务可能 容器技术自身在快速演进的同时,笔者也很欣喜地看到,围绕着容器的开源生态系统越发繁盛。Docker三剑客Machine、Compose、Swarm相辅相成,集团作战;搜索巨人则推出Kubernetes,领航 新一代容器化应用集群平台;还有Mesos、CoreOS,以及其他众多的开源工具。这些工具的出现,弥补了现有容器技术栈的不足,极大地丰富了容器技术的应用场景,增强了容器技术在更多领域的竞争 力。 在第2版中,笔者参照容器技术最新进展对全书内容进行了修订完善,并增加了第四部分专门介绍与容器相关的知名开源项目,利用好这些优秀的开源平台,可以更好地在生产实践中受益

3、。 成书之际,Docker发布了1.13版本,带来了更稳定的性能和更多有趣的特性。 再次感谢容器技术,感谢开源文化,希望开源技术能得到更多的支持和贡献! 最后,IBM中国研究院的刘天成、李玉博等帮忙审阅了部分内容,在此表达最深厚的感谢! 杨保华 2016年12月于北京 第1版前言 在一台服务器上同时运行一百个虚拟机,肯定会被认为是痴人说梦。而在一台服务器上同时运行一千个Docker容器,这已经成为现实。在计算机技术高速发展的今天,昔日的天方夜谭正在一个个变成 现实。 多年的研发和运维(DevOps)经历中,笔者时常会碰到这样一个困境:用户的需求越来越多样,系统的规模越来越庞大,运行的软件越来越

4、复杂,环境配置问题所造成的麻烦层出不穷为了解决这 些问题,开源社区推出过不少优秀的工具。这些方案虽然在某些程度上确能解决部分“燃眉之急”,但是始终没有一种方案能带来“一劳永逸”的效果。 让作为企业最核心资源的工程师们花费大量的时间,去解决各种环境和配置引发的Bug,这真的正常吗? 回顾计算机的发展历程,最初,程序设计人员需要直接操作各种枯燥的机器指令,编程效率之低可想而知。高级语言的诞生,将机器指令的具体实现成功抽象出来,从此揭开了计算机编程效率突飞猛 进的大时代。那么,为什么不能把类似的理念(抽象与分层)也引入到现代的研发和运维领域呢? Docker无疑在这一方向上迈出了具有革新意义的一步。

5、笔者在刚接触Docker时,就为它所能带来的敏捷工作流程而深深吸引,也为它能充分挖掘云计算资源的效能而兴奋不已。我们深信,Docker的 出现,必将给DevOps技术,甚至整个信息技术产业的发展带来深远的影响。 笔者曾尝试编写了介绍Docker技术的中文开源文档。短短一个月的时间,竟收到了来自全球各个地区超过20万次的阅读量和全五星的好评。这让我们看到国内技术界对于新兴开源技术的敏锐嗅觉和迫 切需求,同时也倍感压力,生怕其中有不妥之处,影响了大家学习和推广Docker技术的热情。在开源文档撰写过程中,我们一直在不断思考,在生产实践中到底怎么用Docker才是合理的?在“华章图 书”的帮助下,终

6、于有了现在读者手中的这本书。 与很多技术类书籍不同,本书中避免一上来就讲述冗长的故事,而是试图深入浅出、直奔主题,在最短时间内让读者理解和掌握最关键的技术点,并且配合实际操作案例和精炼的点评,给读者提供真 正可以上手的实战指南。 本书在结构上分为三大部分。第一部分是Docker技术的基础知识介绍,这部分将让读者对Docker技术能做什么有个全局的认识;第二部分将具体讲解各种典型场景的应用案例,供读者体会Docker在 实际应用中的高效秘诀;第三部分将讨论一些偏技术环节的高级话题,试图让读者理解Docker在设计上的工程美学。最后的附录归纳了应用Docker的常见问题和一些常用的参考资料。读者可

7、根据自身需 求选择阅读重点。全书主要由杨保华和戴王剑主笔,曹亚仑写作了编程开发和实践之道章节。 本书在写作过程中参考了官方网站上的部分文档,并得到了DockerPool技术社区网友们的积极反馈和支持,在此一并感谢! 成稿之际,Docker已经发布了增强安全特性的1.3.2版本。衷心祝愿Docker及相关技术能够快速成长和成熟,让众多IT从业人员的工作和生活都更加健康、更加美好! 作者于2014年11月 第一部分 基础入门 第1章 初识容器与Docker 第2章 核心概念与安装配置 第3章 使用Docker镜像 第4章 操作Docker容器 第5章 访问Docker仓库 第6章 Docker数据

8、管理 第7章 端口映射与容器互联 第8章 使用Dockerfile创建镜像 本部分共有8章内容,笔者将介绍Docker和容器的相关基础知识。 第1章介绍Docker的前世与今生,以及它与现有的虚拟化技术,特别是Linux容器技术的关系。 第2章介绍Docker的三大核心概念,以及如何在常见的操作系统环境中安装Docker。 第3章到第5章通过具体的示例,讲解使用Docker的常见操作,包括镜像、容器和仓库。 第6章剖析如何在Docker中使用数据卷来保存持久化数据。 第7章介绍如何使用端口映射和容器互联来方便外部对容器服务的访问。 第8章介绍如何编写Dockerfile配置文件,以及使用Doc

9、kerfile来创建镜像的具体方法和注意事项。 第1章 初识容器与Docker 如果说主机时代大家比拼的是单个服务器物理性能(如CPU主频和内存),那么在云时代,最为看重的则是凭借虚拟化技术所构建的集群处理能力。 伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中。从20世纪60年代IBM推出的大型主机虚拟化,到后来以Xen、KVM为代表的虚拟机虚拟化,再到现在以Docker为代表的 容器技术,虚拟化技术自身也在不断进行创新和突破。 传统来看,虚拟化既可以通过硬件模拟来实现,也可以通过操作系统软件来实现。而容器技术则更为优雅,它充分利用了操作系统本身已有的机制和特性,可以实现远

10、超传统虚拟机的轻量级虚拟化。 因此,有人甚至把它称为“新一代的虚拟化”技术,并将基于容器打造的云平台亲切地称为“容器云”。 Docker毫无疑问正是众多容器技术中的佼佼者,是容器技术发展过程中耀眼的一抹亮色。那么,什么是Docker?它会带来哪些好处?它跟现有虚拟化技术又有何关系? 本章首先会介绍Docker项目的起源和发展过程,之后会为大家剖析Docker和相关容器技术,以及它在DevOps等场景带来的巨大便利。最后,还将阐述Docker在整个虚拟化领域中的技术定位。 1.1 什么是Docker 1.Docker开源项目背景 Docker是基于Go语言实现的开源容器项目,诞生于2013年年初

11、,最初发起者是dotCloud公司。Docker自开源后受到广泛的关注和讨论,目前已有多个相关项目(包括Docker三剑客、Kubernetes 等),逐渐形成了围绕Docker容器的生态体系。 由于Docker在业界造成的影响力实在太大,dotCloud公司后来也直接改名为Docker Inc,并专注于Docker相关技术和产品的开发。 图1-1 Docker官方网站 Docker项目已加入了Linux基金会,并遵循Apache2.0协议,全部开源代码均在https:/ 中,Docker仅次于2010年发起的OpenStack项目,并仍处于上升趋势。 现在主流的Linux操作系统都已经支持D

12、ocker。例如,红帽公司的RHEL 6.5/CentOS 6.5往上的操作系统、Ubuntu 14.04往上的操作系统,都已经在软件源中默认带有Docker软件包。Google公司宣 称在其PaaS(Platform as a Service)平台及服务产品中广泛应用了Docker容器。IBM公司跟Docker公司达成了战略合作伙伴关系。微软公司在其云平台Azure上加强了对Docker的支持。公有云提供商 亚马逊也推出了AWS EC2 Container服务,提供对Docker和容器业务的支持。 Docker的构想是要实现“Build,Ship and Run Any App,Anywhe

13、re”,即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管 理,达到应用组件“一次封装,到处运行”的目的。这里的应用组件,既可以是一个Web应用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。 基于Linux平台上的多项开源技术,Docker提供了高效、敏捷和轻量级的容器方案,并支持部署到本地环境和多种主流云平台。可以说,Docker首次为应用的开发、运行和部署提供了“一站式”的实 用解决方案。 2.Linux容器技术巨人的肩膀 跟大部分新兴技术的诞生一样,Docker也并非“从石

14、头缝里蹦出来的”,而是站在前人的肩膀上,其中最重要的就是Linux容器(Linux Containers,LXC)技术。 IBM DeveloperWorks网站关于容器技术的描述十分准确:“容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样 既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。” 当然,LXC也经历了长期的演化。最早的容器技术可以追溯到1982年Unix系列操作系统上的ch

15、root工具(直到今天,主流的Unix、Linux操作系统仍然支持和带有该工具)。早期的容器实现技术包括 Sun Solaris操作系统上的Solaris Containers(2004年发布),FreeBSD操作系统上的FreeBSD jail(2000年左右出现),以及GNU/Linux上的Linux-VServer和OpenVZ。 在LXC之前,这些相关技术经过多年的演化已经十分成熟和稳定,但是由于种种原因,它们并没有被很好地集成到主流的Linux内核中,用户使用起来并不方便。例如,如果用户要使用OpenVZ技术, 需要先手动给操作系统打上特定的内核补丁方可使用,而且不同版本并不一致。类

16、似的困难造成在很长一段时间内,这些优秀的技术只流传于技术人员的小圈子中。 后来LXC项目借鉴了前人成熟的容器设计理念,并基于一系列新引入的内核特性,实现了更具扩展性的虚拟化容器方案。更加关键的是,LXC终于被集成到了主流Linux内核中,进而成为了Linux系统轻 量级容器技术的事实标准。从技术层面来看,LXC已经趟过了绝大部分的“坑”,完成了容器技术实用化的大半历程。 3.从Linux容器到Docker 在LXC的基础上,Docker进一步优化了容器的使用体验,让它进入了寻常百姓家。 首先,Docker提供了各种容器管理工具(如分发、版本、移植等)让用户无需关注底层的操作,可以更简单明了地管

17、理和使用容器;其次,Docker通过引入分层文件系统构建和高效的镜像机制,降 低了迁移难度,极大地提升了用户体验。用户操作Docker容器就像操作应用自身一样简单。 早期的Docker代码实现是直接基于LXC的。自0.9版本开始,Docker开发了libcontainer项目,作为更广泛的容器驱动实现,从而替换掉了LXC的实现。目前,Docker还积极推动成立了runC标准项 目,试图让容器支持不再局限于Linux操作系统,而是更安全、更具扩展性。 简单地讲,读者可以将Docker容器理解为一种轻量级的沙盒(sandbox)。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络

18、互相通信。容器的创建和停止都十分快速,几 乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题。 有理由相信,Docker技术会进一步成熟,将成为更受欢迎的容器虚拟化技术实现,并在云计算和DevOps等领域得到更广泛的应用。 1.2 为什么要使用Docker 1.Docker容器虚拟化的好处 Docker项目的发起人和Docker公司CTO Solomon Hykes曾认为,Docker在正确的地点、正确的时间顺应了正确的趋势如何正确地构建应用。 在云时代,开发者创建的应用必须要能很方便地在网络上传播,

19、也就是说应用必须脱离底层物理硬件的限制;同时必须是“任何时间、任何地点”可获取的。因此,开发者需要一种新型的创建分布式 应用程序的方式,快速分发和部署,这正是Docker所能够提供的最大优势。 举个简单的例子,假设用户试图基于最常见的LAMP(Linux+Apache+MySQL+PHP)组合来构建一个网站。按照传统的做法,首先,需要安装Apache、MySQL和PHP以及它们各自运行所依赖的环 境;之后分别对它们进行配置(包括创建合适的用户、配置参数等);经过大量的操作后,还需要进行功能测试,看是否工作正常;如果不正常,则进行调试追踪,意味着更多的时间代价和不可控的风 险。可以想象,如果应用

20、数目变多,事情会变得更加难以处理。 更为可怕的是,一旦需要服务器迁移(例如从亚马逊云迁移到其他云),往往需要对每个应用都进行重新部署和调试。这些琐碎而无趣的“体力活”,极大地降低了工作效率。究其根源,是这些应用 直接运行在底层操作系统上,无法保证同一份应用在不同的环境中行为一致。 而Docker提供了一种更为聪明的方式,通过容器来打包应用,解耦应用和运行平台。意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否是同一类型的平台。这 无疑将节约大量的宝贵时间,并降低部署过程出现问题的风险。 2.Docker在开发和运维中的优势 对开发和运维(DevOps)人员来说,可

21、能最梦寐以求的效果就是一次创建或配置,之后可以在任意地方、任意时间让应用正常运行。而Docker恰恰是可以实现这一终极目标的“瑞士军刀”。 具体说来,Docker在开发和运维过程中,具有如下几个方面的优势: 更快速的交付和部署。使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同环境来部署代码。只要开发测试过的代码,就可 以确保在生产环境无缝运行。Docker可以快速创建和删除容器,实现快速迭代,大量节约开发、测试、部署的时间。并且,整个过程全程可见,使团队更容易理解应用的创建和工作过程。 更高效的资源利用。Docker容器的运行

22、不需要额外的虚拟化管理程序(Virtual Machine Manager,VMM,以及Hypervisor)支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很 低。跟传统虚拟机方式相比,要提高一到两个数量级。 更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。这种兼容性让用户可以在不同 平台之间轻松地迁移应用。 更简单的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。并且所有修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器

23、管理。 3.Docker与虚拟机比较 作为一种轻量级的虚拟化方式,Docker在运行应用上与传统的虚拟机方式相比具有显著优势: Docker容器很快,启动和停止可以在秒级实现,而传统的虚拟机方式需要数分钟。 Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器(在IBM服务器上已经实现了同时运行10K量级的容器实例)。 Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新。 Docker通过Dockerfile支持灵活的自动化创建和部署机制,提高工作效率,使流程标准化。 Docker容器除了运行其中应用外,基本不消耗额外的系

24、统资源,保证应用性能的同时,尽量减小系统开销。传统虚拟机方式运行N个不同的应用就要起N个虚拟机(每个虚拟机需要单独分配独占的内 存、磁盘等资源),而Docker只需要启动N个隔离的“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。 当然,在隔离性方面,传统的虚拟机方式提供的是相对封闭的隔离。但这并不意味着Docker就不安全,Docker利用Linux系统上的多种防护技术实现了严格的隔离可靠性,并且可以整合众多安全工 具。从1.3.0版本开始,Docker重点改善了容器的安全控制和镜像的安全机制,极大提高了使用Docker的安全性。在已知的大规模应用中,目前尚未出现值得担

25、忧的安全隐患。 表1-1总结了使用Docker容器技术与传统虚拟机技术的特性比较,可见容器技术在很多应用场景下都具有巨大的优势。 表1-1 Docker容器技术与传统虚拟机技术的特性比较 1.3 Docker与虚拟化 虚拟化(Virtualization)技术是一个通用的概念,在不同领域有不同的理解。在计算领域,一般指的是计算虚拟化(Computing Virtualization),或通常说的服务器虚拟化。维基百科上的定义如 下:“虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态

26、更好的方式 来应用这些资源。” 可见,虚拟化的核心是对资源的抽象,目标往往是为了在同一个主机上同时运行多个系统或应用,从而提高系统资源的利用率,并且带来降低成本、方便管理和容错容灾等好处。 从大类上分,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟化。其中,真正意义上的基于硬件的虚拟化技术不多见,少数如网卡中的单根多IO虚拟化(Single Root I/O Virtualization and Sharing Specification,SR-IOV)等技术,也超出了本书的讨论范畴。 基于软件的虚拟化从对象所在的层次,又可以分为应用虚拟化和平台虚拟化(通常说的虚拟机技术即属于这个范畴)。其

27、中,前者一般指的是一些模拟设备或诸如Wine这样的软件。后者又可以细分为 如下几个子类: 完全虚拟化。虚拟机模拟完整的底层硬件环境和特权指令的执行过程,客户操作系统无需进行修改。例如IBM p和z系列的虚拟化、VMware Workstation、VirtualBox、QEMU等。 硬件辅助虚拟化。利用硬件(主要是CPU)辅助支持(目前x86体系结构上可用的硬件辅助虚拟化技术包括Intel-VT和AMD-V)处理敏感指令来实现完全虚拟化的功能,客户操作系统无需修改,例如 VMware Workstation、Xen、KVM。 部分虚拟化。只针对部分硬件资源进行虚拟化,客户操作系统需要进行修改。

28、现在有些虚拟化技术的早期版本仅支持部分虚拟化。 准虚拟化(paravirtualization)。部分硬件接口以软件的形式提供给客户机操作系统,客户操作系统需要进行修改,例如早期的Xen。 操作系统级虚拟化。内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。容器相关技术即在这个范畴。 可见,Docker以及其他容器技术,都属于操作系统虚拟化这个范畴,操作系统虚拟化最大的特点就是不需要额外的supervisor支持。 Docker虚拟化方式之所以有众多优势,这与操作系统虚拟化技术自身的设计和实现是分不开的。 图1-2比较了Docker和常见的虚拟化方式的不同之处。 图1-2 Doc

29、ker和传统的虚拟化方式的不同之处 传统方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层。Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。 1.4 本章小结 本章介绍了容器虚拟化的基本概念、Docker的诞生及发展历史,以及容器在云时代应用分发场景下的巨大优势。 与传统的虚拟机相比,容器虚拟化方式在很多场景下都有极为明显的优势。无论是系统管理员、应用开发人员、测试人员以及运维管理人员,都应该尽快掌握Docker,尽早享受其带来的巨大便利。 后续章节,笔者将结合实践案例具体介绍Docker的安装、使用,让我们一起开启精彩的Dock

30、er之旅。 第2章 核心概念与安装配置 本章首先介绍Docker的三大核心概念。 镜像(Image) 容器(Container) 仓库(Repository) 只有理解了这三个核心概念,才能顺利地理解Docker容器的整个生命周期。 随后,笔者将介绍如何在常见的操作系统平台上安装Docker,包括Ubuntu、CentOS、MacOS和Windows等主流操作系统平台。 2.1 核心概念 Docker的大部分操作都围绕着它的三大核心概念镜像、容器和仓库而展开。因此,准确把握这三大核心概念对于掌握Docker技术尤为重要。 1.Docker镜像 Docker镜像类似于虚拟机镜像,可以将它理解为一

31、个只读的模板。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或用户需要的其他软件)。可以把它称为一个 Apache镜像。 镜像是创建Docker容器的基础。通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。 2.Docker容器 Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。 可以把容器看做是一个简易版的Linux系统环境(包括

32、root用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子。 注意 镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。 3.Docker仓库 Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。 有时候会看到有资料将Docker仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像, 往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库称为Ubuntu仓库,其中可能包括14.04、

33、12.04等不同版本的镜像。仓库注册服务器的示例如图2-1所 示。 图2-1 注册服务器与仓库 根据所存储的镜像公开分享与否,Docker仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式。目前,最大的公开仓库是官方提供的Docker Hub,其中存放了数量庞大的镜像供用户下 载。国内不少云服务提供商(如时速云、阿里云等)也提供了仓库的本地源,可以提供稳定的国内访问。 当然,用户如果不希望公开分享自己的镜像文件,Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。当用户创建了自己的镜像之后就可以使用push命令将它上传到指定的公有或者 私有仓库。这样用户下次

34、在另外一台机器上使用该镜像时,只需要将其从仓库上pull下来就可以了。 提示 可以看出,Docker利用仓库管理镜像的设计理念与Git非常相似,实际上在理念设计上借鉴了Git的很多优秀思想。 2.2 安装Docker Docker在主流的操作系统和云平台上都可以使用,包括Linux操作系统(如Ubuntu、Debian、CentOS、Redhat等)、MacOS操作系统和Windows操作系统,以及AWS等云平台。 用户可以访问Docker官网的Get Docker(https:/ 图2-2 获取Docker 在Get Docker页面,我们可以看到目前Docker支持Docker Platf

35、orm、Docker Hub、Docker Cloud和Docker DataCenter。 Docker Platform:支持在桌面系统或云平台安装Docker; DockerHub:官方提供的云托管服务,可以提供公有或私有的镜像仓库; DockerCloud:官方提供的容器云服务,可以完成容器的部署与管理,可以完整地支持容器化项目,还有CI、CD功能; Docker DataCenter:提供企业级的简单安全弹性的容器集群编排和管理。 笔者推荐尽量使用Linux操作系统来运行Docker,因为目前Linux操作系统对Docker的支持是原生的,使用体验最好。 2.2.1 Ubuntu环境

36、下安装Docker 1.系统要求 Docker目前只能运行在64位平台上,并且要求内核版本不低于3.10,实际上内核越新越好,过低的内核版本容易造成功能不稳定。 用户可以通过如下命令检查自己的内核版本详细信息: $ uname -a Linux Host 3.16.0-43-generic #5814.04.1-Ubuntu SMP Mon Jun 22 10:21:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 或者: $ cat /proc/version Linux version 3.16.0-43-generic (builddbrownie)

37、(gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #5814.04.1-Ubuntu SMP Mon Jun 22 10:21:20 UTC 2015 Docker目前支持的最低Ubuntu版本为12.04 LTS,但实际上从稳定性上考虑,推荐至少使用14.04 LTS版本。 如果使用12.04 LTS版本,首先要更新系统内核和安装可能需要的软件包,包括: linux-image-generic-lts-trusty(必备) linux-headers-generic-lts-trusty(必备) xserver-xorg-lts-trusty(带图形

38、界面时必备) libgl1-mesa-glx-lts-trusty(带图形界面时必备) 另外,为了让Docker使用aufs存储,推荐安装linux-image-extra软件包。 $ sudo apt-get install -y linux-image-extra-$(uname -r) 注意 Ubuntu发行版中,LTS(Long-Term-Support)意味着更稳定的功能和更长期(目前为5年)的升级支持,生产环境中尽量使用LTS版本。 2.添加镜像源 首先需要安装apt-transport-https包支持HTTPS协议的源: $ sudo apt-get install -y ap

39、t-transport-https 添加源的gpg密钥: $ sudo apt-key adv -keyserver hkp:/p80.pool.sks-:80 -recv-keys 58118E89F3A912897C070ADBF76221572C52609D 获取当前操作系统的代号: $ lsb_release -c Codename: trusty 一般情况下,12.04(LTS)代号为precise,14.04(LTS)代号为trusty,15.04代号为vivid,15.10代号为wily。这里获取的代号为trusty。 接下来就可以添加Docker的官方apt软件源了。通过下面的

40、命令创建/etc/apt/sources.list.d/docker.list文件,并写入源的地址内容。非trusty版本的系统注意修改为自己对应的代号: $ sudo cat /etc/apt/sources.list.d/docker.list deb https:/apt.dockerproject.org/repo ubuntu-trusty main EOF 添加成功后,更新apt软件包缓存: $ sudo apt-get update 3.开始安装Docker 在成功添加源之后,就可以安装最新版本的Docker了,软件包名称为docker-engine: $ sudo apt-ge

41、t install -y docker-engine 如果系统中存在较旧版本的Docker(lxc-docker),会提示是否先删除,选择“是”即可。 除了基于手动添加软件源的方式,也可以使用官方提供的脚本来自动化安装Docker: $ sudo curl -sSL https:/ | sh 安装成功后,启动docker服务: $ sudo service docker start 2.2.2 CentOS环境下安装Docker 系统的要求与Ubuntu情况下类似:64位操作系统,内核版本至少为3.10。 Docker目前支持CentOS 6.5及以后的版本,推荐使用CentOS 7系统。 首

42、先,也是要添加yum软件源: $ sudo tee /etc/yum.repos.d/docker.repo 80/tcp, 443/tcp webserver 可见Nginx容器已经在0.0.0.0:80启动,并映射了80端口,下面我们打开浏览器访问此地址,如图2-7所示。 第五步,常用配置设定。首先,点击系统状态栏的Docker图标,会出现操作菜单,如图2-8所示。 图2-7 允许访问系统权限 图2-8 Docker菜单 然后,点击Preferences,进入标准配置页面,我们可以设置是否自动启动与更新,设置备份工具Time Machine是否备份VM,还可以配置Docker使用的CPU数

43、、内存容量,如图2-9所示。 点击进入Advanced进阶配置。为了更好地使用Docker Hub,我们可以使用Registry镜像站点进行加速。点击+后,加入镜像站点配置。这里还可以配置HTTP代理服务器,如图2-10所示。 点击进入File Sharing标签页,此处可以配置挂载至容器中的本地目录。点击+后可以继续添加本地目录,如图2-11所示。 图2-9 标准配置页面 图2-10 高级配置页面 点击进入Privacy标签页,此处可以配置隐私选项,如是否发送使用信息,以及是否发送程序崩溃报告,如图2-12所示。 图2-11 文件分享配置页面 图2-12 隐私配置页面 2.Docker To

44、olbox 在Mac OS X操作系统上安装Docker,除了Docker for Mac的原生方式之外,还可以使用官方提供的Docker ToolBox工具。 首先前往https:/ OS X版本为10.6+。如图2-13所示。 图2-13 ToolBox安装页面 双击运行安装包。这个过程将安装一个VirtualBox虚拟机,内置了Docker Engine、Compose、Machine、Kitematic等管理工具。安装成功后,找到Boot2Docker并运行它。如图2-14所示。 图2-14 Boot2Docker页面 现在进行Boot2Docker的初始化: $ boot2docke

45、r init $ boot2docker start $ $(boot2docker shellinit) 将看到虚拟机在命令行窗口中启动运行。当虚拟机初始化完毕后,可以使用boot2docker stop和boot2docker start来控制它。 注意,如果在命令行中看到如下提示信息: To connect the Docker client to the Docker daemon, please set: export DOCKER_ HOST=tcp:/192.168.59.103:2375 可以执行提示信息中的语句:export DOCKER_HOST=tcp:/192.168.

46、59.103:2375。此语句的作用是在系统环境变量中设置Docker的主机地址。 2.2.5 Windows环境下安装Docker 目前Docker可以通过虚拟机方式来支持Windows 7.1和8,只要平台CPU支持硬件虚拟化特性即可。如果无法确定自己计算机的CPU是否支持该特性也无需担心,实际上,目前市面上主流的CPU都早 已支持了硬件虚拟化特性。 对于Windows 10用户,Docker官方提供了原生虚拟化应用Docker for Windows。详情见:https:/ 7还是主导地位的版本,所以下面主 要讲解如何在Windows 7环境下安装Docker环境。 由于Docker引擎

47、使用了Linux内核特性,所以如果要在Windows 10之外的Windows上运行,需要额外使用一个虚拟机来提供Linux支持。这里推荐使用Boot2Docker工具,它会首先安装一个经过加 工与配置的轻量级虚拟机,然后在其中运行Docker。主要步骤如下: 首先,从https:/ for Windows Installer。双击打开Installer。这个过程将安装VirtualBox、MSYS-git、boot2docker Linux ISO镜 像,以及Boot2Docker管理工具。如图2-15所示。 图2-15 Docker for Windows Installer 最后,打开桌

48、面的Boot2Docker Start程序,或者Program FilesBoot2Docker for Windows。此初始化脚本在第一次运行时需要输入一个SSH Key Passphrase(用于SSH密钥生成的口令)。读者可 以自行设定,也可以直接按回车键跳过此设定。如图2-16所示。 图2-16 Boot2Docker安装器 此时Boot2Docker Start程序将连接至虚拟机中的Shell会话,Docker已经运行起来了! 2.3 配置Docker服务 为了避免每次使用docker命令都要用特权身份,可以将当前用户加入安装中自动创建的docker用户组: $ sudo usermod -aG docker USER_NAME 用户更新组信息后,退出并重新登录后即可生效。 另外,Docker服务支持多种启动参数。以Ubuntu 14.04系统为例,Docker服务的默认配置文件为/etc/default/docker,可以通过修改其中的DOCKER_OPTS来修改服务启动的参数,例如,下一行代 码让Docker服务可以通过本地2375端口接收来自外部的请求: DOCKER_OPTS=“$DOCK

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料


经营许可证编号:宁ICP备18001539号-1