新書推薦:
《
母亲的选择:看不见的移民保姆与女性工作
》
售價:NT$
340.0
《
城邦政治与灵魂政治——柏拉图《理想国》中的政治哲学研究
》
售價:NT$
590.0
《
3分钟漫画墨菲定律:十万个为什么科普百科思维方式心理学 胜天半子人定胜天做事与成事的权衡博弈之道
》
售價:NT$
249.0
《
1911:危亡警告与救亡呼吁
》
售價:NT$
349.0
《
旷野人生:吉姆·罗杰斯的全球投资探险
》
售價:NT$
345.0
《
笼中王国 : 18世纪法国的珍禽异兽与社会文化
》
售價:NT$
340.0
《
思考的框架3 巴菲特芒格马斯克推崇的思维方式 风靡华尔街的思维训练法 沙恩·帕里什 著
》
售價:NT$
295.0
《
森林疗法:拥抱大自然、获得幸福的季节性方法
》
售價:NT$
340.0
|
內容簡介: |
Docker是目前*流行的容器技术之一,Kubernetes(简称k8s)是目前*流行的容器编排平台之一,本书主要围绕Docker和k8s进行讲解。
本书共分为11章。前7章主要讲解Docker相关内容,从发展简史到基础概念,从市场趋势、应用场景到各环境的安装,从基础操作命令到Docker应用持续开发的工作流程,从主流的编程语言实践到数据库容器化。第8~10章主要讲解Kubernetes的相关内容,从主体架构、核心概念到开发、生产环境搭建以及集群故障处理,从应用部署、伸缩、回滚到应用访问,从云端理念到将应用部署到容器云服务。第11章主要讲解容器化之后的DevOps实践,从DevOps的理念到CI、CD的流程和实践,*后讲述如何使用Azure DevOps、Tencent Hub以及自建的TeamCity来完成CICD,并附有相关参考流程讲解。
|
目錄:
|
前言
第1章走进Docker1
1.1主流的互联网公司均在使用Docker1
1.2什么是Docker4
1.3容器简史4
1.4打消偏见,迎接Docker5
1.5Docker和虚拟机6
1.6Docker的三个基本概念8
1.6.1镜像:一个特殊的文件系统8
1.6.2容器:镜像运行时的实体9
1.6.3仓库:集中存放镜像文件的地方9
1.7Docker版本概述11
第2章Docker的市场趋势和主要应用场景12
2.1Docker的市场趋势12
2.2Docker的主要应用场景15
2.2.1简化配置,无须处理复杂的环境依赖关系15
2.2.2搭建轻量、私有的PaaS环境、标准化开发、测试和生产环境15
2.2.3简化和标准化代码流水线,助力敏捷开发和DevOps实践16
2.2.4隔离应用17
2.2.5整合服务器资源17
2.2.6现代应用17
2.2.7调试能力18
2.2.8快速部署18
2.2.9混合云应用、跨环境应用、可移植应用18
2.2.10物联网和边缘计算18
第3章安装和运行20
3.1Windows 10下的安装20
3.1.1配置Docker本地环境22
3.1.2运行一个简单的demo23
3.2Ubuntu下的安装25
3.2.1了解Ubuntu25
3.2.2使用Hyper-V快速安装Ubuntu25
3.2.3配置外网27
3.2.4使用SSH远程Ubuntu30
3.2.5安装Docker33
3.3CentOS 下的安装37
3.3.1了解CentOS37
3.3.2使用CentOS 7 安装Docker38
3.4基于树莓派搭建个人网盘41
3.4.1什么是树莓派41
3.4.2开启SSH43
3.4.3安装Docker44
3.4.4基于树莓派的一行命令搭建个人网盘46
第4章Docker命令基础知识48
4.1登录49
4.1.1OPTIONS说明49
4.1.2登录Docker Hub49
4.1.3登录到腾讯云镜像仓库50
4.2拉取镜像51
4.2.1OPTIONS说明51
4.2.2从Docker Hub拉取镜像51
4.2.3从腾讯云镜像仓库拉取镜像52
4.3列出本地镜像53
4.3.1OPTIONS说明53
4.3.2按名称和标签列出镜像54
4.3.3筛选55
4.4运行镜像58
4.4.1OPTIONS说明58
4.4.2简单运行60
4.5列出容器61
4.5.1OPTIONS说明61
4.5.2查看正在运行的容器61
4.5.3显示正在运行和已停止的容器61
4.5.4筛选62
4.5.5根据指定模板输出62
4.6查看镜像详情63
4.7删除镜像64
4.7.1OPTIONS说明64
4.7.2批量删除65
4.8清理未使用的镜像65
4.9磁盘占用分析67
4.10删除容器68
4.10.1OPTIONS说明68
4.10.2停止容器再删除68
4.10.3强制删除正在运行的容器69
4.10.4删除所有已停止的容器69
4.11镜像构建70
4.11.1OPTIONS说明70
4.11.2简单构建71
4.12镜像历史73
4.12.1OPTIONS说明73
4.12.2查看镜像历史74
4.12.3格式化输出74
4.13修改镜像名称和标签75
4.14镜像推送76
4.14.1推送到Docker Hub76
4.14.2推送到腾讯云镜像仓库77
4.15使用Kitematic来管理Docker容器77
第5章Docker持续开发工作流81
5.1基于Docker容器的内部循环开发工作流81
5.1.1开发82
5.1.2编写Dockerfile83
5.1.3创建自定义镜像90
5.1.4定义docker-compose91
5.1.5启动Docker应用97
5.1.6测试99
5.1.7部署或继续开发100
5.2Visual Studio和Docker100
5.2.1使用VS自动生成工程的Dockerfile文件101
5.2.2VS支持的容器业务协调程序102
5.2.3使用VS发布镜像104
5.3使用 Visual Studio Code玩转Docker105
5.3.1官方扩展插件Docker105
5.3.2Docker Compose扩展插件109
第6章Docker应用开发之旅111
6.1使用.NET Core开发云原生应用111
6.1.1什么是“云原生”112
6.1.2.NET Core简介112
6.1.3官方镜像114
6.1.4Kestrel115
6.1.5按环境加载配置118
6.1.6查看和设置容器的环境变量119
6.1.7ASP.NET Core内置的日志记录提供程序121
6.1.8编写一个简单的Demo输出日志122
6.1.9使用“docker logs”查看容器日志124
6.1.10使用“docker stats”查看容器资源使用125
6.1.11如何解决容器应用的时区问题125
6.2使用Docker搭建Java开发环境127
6.2.1官方镜像127
6.2.2使用Docker搭建Java开发环境127
6.2.3Docker资源限制130
6.2.4防止Java容器应用被杀130
6.3使用Go推送钉钉消息131
6.3.1Go的优势131
6.3.2官方镜像132
6.3.3使用Go推送钉钉消息133
6.4使用Python实现简单爬虫140
6.4.1关于Python140
6.4.2官方镜像140
6.4.3使用Python抓取博客列表141
6.5使用PHP搭建个人博客站点145
6.5.1官方镜像146
6.5.2编写简单的“Hello world”146
6.5.3使用WordPress镜像搭建个人博客站点148
6.5.4修改PHP的文件上传大小限制151
6.6使用Node.js搭建团队技术文档站点151
6.6.1官方镜像152
6.6.2编写一个简单的Web服务器152
6.6.3使用Hexo搭建团队技术文档站点154
第7章数据库容器化161
7.1什么是数据库161
7.2关系型数据库和非关系型数据库对比162
7.3主流的数据库162
7.4数据库容器化163
7.5SQL Server容器化163
7.5.1镜像说明164
7.5.2运行SQL Server 容器镜像165
7.5.3管理SQL S
|
內容試閱:
|
作为互联网大军中的一员,我经常会思考:如何避免“996”和“ICU”?如何更好地解决软件的交付速度和质量的问题?毕竟过度的加班不仅伤身劳神,结果还不太理想——Bug和问题往往与加班时间成正比,修复问题的时间可能远远大于开发功能的时间。
针对这个问题,我们要一分为二地去看:一方面,我们需要明确自己的远近目标,确保正确的方向以及有效的工作;另一方面,团队需要不断地接受适合自身的先进理念、思维以及工作方式、团队文化、技术和工具,以提高交付速度,并且保障软件交付质量。
关于适合自身的先进理念、思维和工作方式、团队文化、技术和工具,时下流行的有很多,最热门的理念莫过于DevOps。它其实并不是新创造出来的,而是软件工程的过程和方法论变化、进化和升级的必然结果(可以参见本书的第11章)。做好了DevOps实践,团队必然可以更快、更可靠地交付软件,提高客户的满意度。但是,做好DevOps实践不但对团队文化有很高的要求,而且对相关工具、技术、部署环境等也有很高的要求,这对于大部分团队来说是一个极大的挑战——既没有精力,也没有实力。
抛开团队文化等,有没有更易于落地的配合DevOps的解决方案呢?有,那就是以Docker为代表的容器技术作为基础保障、以Kubernetes(简称k8s)为代表的容器编排技术作为支撑的解决方案!它们“出世”并不算早,Docker诞生于2013年,k8s v1发布于2015年,公开面世虽只有短短几年,它们却已经成为相关领域的事实标准。它们的出现是历史的必然,并不能算是新的技术和理念,而是容器技术和容器编排技术演进的创新结果,也是一代又一代互联网人追求高效生产活动的解决方案、思想、工具和愿景。
Docker+k8s短短几年就脱颖而出,除了更易配合DevOps落地之外,还有众多原因(比如Docker更轻、更快、开源、隔离应用,以及k8s便携、可扩展、自动修复等),但是其中很重要的一个原因是,在虚拟机时代那些无法解决或者说很难解决的问题以及那些积压已久的需求(比如分布式系统的部署和运维,物联网边缘计算的快速开发、测试、部署和运维,大规模的云计算,等等)在Docker+k8s 的组合下找到了突破口,并且极大地促进了云计算的发展。尤其是k8s,更是代表了云原生应用平台的未来——它借助Docker和微服务架构的发展迅速崛起,高举着云原生应用的设计法则,硬生生地打败了所有的对手,赢得了一片更广阔的天地和更璀璨的未来(在原有的云计算基础设施上抽象出了云原生平台基础设施,形成了一个高度自治的自动化系统平台)。
开发者普遍将Docker+k8s应用于敏捷开发、DevOps实践、混合云和微服务架构。同时,主流的互联网公司都将应用托管到了应用容器上,比如谷歌、微软、亚马逊、腾讯、阿里、京东、美团和新浪。主流的云厂商均提供了容器服务,并且为之打造了极其强大和丰富的生态。其中许多云厂商还推出了无服务器计算容器实例产品,这意味着容器能够在无服务器计算的基础设施上运行。比如在某些机器学习的场合,用户可以在无服务器计算的基础设施上几秒内启动成千上万个容器,然后挂载共享存储的数据或图像进行处理。当批量处理完成后,容器自动销毁,用户仅需按量付费。
现在的技术发展很快,Docker和k8s的技术点、命令行、接口参数说明以官网为主、本书为辅。一方面,官网的内容往往是最新、最及时的;另一方面,本书更多的是指导大家快速进入相关的实践,分享相关的思维、理念和技巧,并且指导大家将容器应用托管到自建或者云端的k8s集群以及云厂商提供的容器云服务。
为什么要编写本书
促使我编写本书的原因主要有:
?大家对Docker+k8s的认知程度还比较低,缺乏宏观的认知。
?大家普遍认为Docker+k8s只是一种单纯的相对先进的技术,不能够很好地理解其优势和趋势,认为其并不能给现有的开发运维体系带来什么改变。而许多同类书籍往往只是介绍了一些技术点和细节,并没有让大家从宏观角度、发展趋势去认知Docker+k8s,也没有很好的体系去指导实践和生产。
?对于想更好地学习相关知识的开发者,缺少系统的教程以及完整的工作流程的实践案例,不能提供很好的技术引导。这使得普通开发者普遍认为使用Docker+k8s很麻烦,改造成本过大,只有大公司才能用,门槛很高。
?云端容器服务产品的用户体验不够友好,对于初学者门槛太高(指的是消化这些概念和理念,并且能够掌握和可控);同时,各家云端的容器产品都进行过包装,体验各不相同,和原生的体验也不同。
内容介绍
本书共分为11章。
第1章,主要介绍Docker以及容器技术的发展简史,并且对比Docker和虚拟机,最后讲述Docker的3个基本概念和版本区别,为后续进一步讲解Docker做铺垫。
第2章,主要介绍Docker的市场趋势和主要应用场景。
第3章,主要讲解各个环境(Windows 10、Ubuntu、CentOS、树莓派)下的Docker安装过程,以及如何使用树莓派搭建个人网盘。
第4章,主要结合实践示例讲解Docker的一些镜像操作命令和容器操作命令,以及相关参数,最后介绍如何使用Kitematic来管理Docker容器。
第5章,主要围绕Docker应用开发的持续工作流程进行讲解,在开发、测试、部署整个过程中穿插Doc
|
|