zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Docker技术入门与实战(第2版)导读

Docker技术入门 实战 导读
2023-09-11 14:16:03 时间
在一台服务器上同时运行一百个虚拟机,肯定会被认为是痴人说梦。而在一台服务器上同时运行一千个Docker容器,这已经成为现实。在计算机技术高速发展的今天,昔日的天方夜谭正在一个个变成现实。 多年的研发和运维(DevOps)经历中,笔者时常会碰到这样一个困境:用户的需求越来越多样,系统的规模越来越庞大,运行的软件越来越复杂,环境配置问题所造成的麻烦层出不穷……为了解决这些问题,开源社区推出过不少优秀的工具。这些方案虽然在某些程度上确能解决部分“燃眉之急”,但是始终没有一种方案能带来“一劳永逸”的效果。 让作为企业最核心资源的工程师们花费大量的时间,去解决各种环境和配置引发的 Bug,这真的正常吗? 回顾计算机的发展历程,最初,程序设计人员需要直接操作各种枯燥的机器指令,编程效率之低可想而知。高级语言的诞生,将机器指令的具体实现成功抽象出来,从此揭开了计算机编程效率突飞猛进的大时代。那么,为什么不能把类似的理念(抽象与分层)也引入到现代的研发和运维领域呢? Docker无疑在这一方向上迈出了具有革新意义的一步。笔者在刚接触Docker时,就为它所能带来的敏捷工作流程而深深吸引,也为它能充分挖掘云计算资源的效能而兴奋不已。我们深信,Docker的出现,必将给DevOps技术,甚至整个信息技术产业的发展带来深远的影响。 笔者曾尝试编写了介绍Docker技术的中文开源文档。短短一个月的时间,竟收到了来自全球各个地区超过20万次的阅读量和全五星的好评。这让我们看到国内技术界对于新兴开源技术的敏锐嗅觉和迫切需求,同时也倍感压力,生怕其中有不妥之处,影响了大家学习和推广Docker技术的热情。在开源文档撰写过程中,我们一直在不断思考,在生产实践中到底怎么用Docker才是合理的?在“华章图书”的帮助下,终于有了现在读者手中的这本书。 与很多技术类书籍不同,本书中避免一上来就讲述冗长的故事,而是试图深入浅出、直奔主题,在最短时间内让读者理解和掌握最关键的技术点,并且配合实际操作案例和精炼的点评,给读者提供真正可以上手的实战指南。 本书在结构上分为三大部分。第一部分是Docker技术的基础知识介绍,这部分将让读者对Docker技术能做什么有个全局的认识;第二部分将具体讲解各种典型场景的应用案例,供读者体会Docker在实际应用中的高效秘诀;第三部分将讨论一些偏技术环节的高级话题,试图让读者理解Docker在设计上的工程美学。最后的附录归纳了应用Docker的常见问题和一些常用的参考资料。读者可根据自身需求选择阅读重点。全书主要由杨保华和戴王剑主笔,曹亚仑写作了编程开发和实践之道章节。 本书在写作过程中参考了官方网站上的部分文档,并得到了DockerPool技术社区网友们的积极反馈和支持,在此一并感谢! 成稿之际,Docker已经发布了增强安全特性的1.3.2版本。衷心祝愿Docker及相关技术能够快速成长和成熟,让众多IT从业人员的工作和生活都更加健康、更加美好! 作者于2014年11月 目 录
第1章 初识容器与Docker   1.1 什么是Docker   1.2 为什么要使用Docker   1.3 Docker与虚拟化   1.4 本章小结   第2章 核心概念与安装配置   2.1 核心概念   2.2 安装Docker   2.3 配置Docker服务   2.4 推荐实践环境   2.5 本章小结   第3章 使用Docker镜像   3.1 获取镜像   3.2 查看镜像信息   3.3 搜寻镜像   3.4 删除镜像   3.5 创建镜像   3.6 存出和载入镜像   3.7 上传镜像   3.8 本章小结   第4章 操作Docker容器  34 4.1 创建容器  34 4.2 终止容器  39 4.3 进入容器  40 4.4 删除容器  42 4.5 导入和导出容器  42 4.6 本章小结  44 第5章 访问Docker仓库  45 5.1 Docker Hub公共镜像市场  45 5.2 时速云镜像市场  47 5.3 搭建本地私有仓库  48 5.4 本章小结  50 第6章 Docker数据管理  51 6.1 数据卷  51 6.2 数据卷容器  52 6.3 利用数据卷容器来迁移数据  53 6.4 本章小结  54 第7章 端口映射与容器互联  55 7.1 端口映射实现访问容器  55 7.2 互联机制实现便捷互访  57 7.3 本章小结  59 第8章 使用Dockerfile创建镜像  60 8.1 基本结构  60 8.2 指令说明  62 8.3 创建镜像  67 8.4 使用.dockerignore文件  67 8.5 最佳实践  67 8.6 本章小结  68 第二部分 实战案例 第9章 操作系统  71 9.1 BusyBox  71 9.2 Alpine  72 9.3 Debian/Ubuntu  74 9.4 CentOS/Fedora  76 9.5 本章小结  77 第10章 为镜像添加SSH服务  78 10.1 基于commit命令创建  78 10.2 使用Dockerfile创建  80 10.3 本章小结  82 第11章 Web服务与应用  83 11.1 Apache  83 11.2 Nginx  87 11.3 Tomcat  88 11.4 Jetty  92 11.5 LAMP  93 11.6 CMS  94 11.6.1 WordPress  94 11.6.2 Ghost  96 11.7 持续开发与管理  96 11.7.1 Jenkins  97 11.7.2 Gitlab  98 11.8 本章小结  99 第12章 数据库应用  100 12.1 MySQL  100 12.2 MongoDB  102 12.2.1 使用官方镜像  102 12.2.2 使用自定义Dockerfile  104 12.3 Redis  106 12.4 Memcached  108 12.5 CouchDB  108 12.6 Cassandra  109 12.7 本章小结  110 第13章 分布式处理与大数据平台  111 13.1 RabbitMQ  111 13.2 Celery  113 13.3 Hadoop  114 13.4 Spark  115 13.4.1 使用官方镜像  116 13.4.2 验证  116 13.5 Storm  117 13.6 Elasticsearch  119 13.7 本章小结  120 第14章 编程开发  121 14.1 C/C++  121 14.1.1 GCC  121 14.1.2 LLVM  122 14.1.3 Clang  122 14.2 Java  123 14.3 Python  124 14.3.1 使用官方的Python镜像  124 14.3.2 使用PyPy  124 14.4 JavaScript  125 14.5 Go  127 14.5.1 搭建并运行Go容器  127 14.5.2 Beego  130 14.5.3 Gogs:基于Go的Git服务  130 14.6 PHP  130 14.7 Ruby  132 14.7.1 使用Ruby官方镜像  132 14.7.2 JRuby  133 14.7.3 Ruby on Rails  134 14.8 Perl  135 14.9 R  136 14.10 Erlang  138 14.11 本章小结  140 第15章 容器与云服务  141 15.1 公有云容器服务  141 15.1.1 AWS  141 15.1.2 Google Cloud Platform  142 15.1.3 Azure  143 15.1.4 腾讯云  144 15.1.5 阿里云  144 15.1.6 华为云  144 15.1.7 UCloud  145 15.2 容器云服务  145 15.2.1 基本要素与关键特性  146 15.2.2 网易蜂巢  146 15.2.3 时速云  147 15.2.4 Daocloud  148 15.2.5 灵雀云  148 15.2.6 数人云  149 15.3 阿里云容器服务  150 15.4 时速云容器平台  151 15.5 本章小结  153 第16章 容器实战思考  154 16.1 Docker为什么会成功  154 16.2 研发人员该如何看容器  155 16.3 容器化开发模式  156 16.4 容器与生产环境  158 16.5 本章小结  160 第三部分 进阶技能 第17章 Docker核心实现技术  163 17.1 基本架构  163 17.2 命名空间  165 17.3 控制组  167 17.4 联合文件系统  169 17.5 Linux网络虚拟化  171 17.6 本章小结  174 第18章 配置私有仓库  175 18.1 安装Docker Registry  175 18.2 配置TLS证书  177 18.3 管理访问权限  178 18.4 配置Registry  181 18.4.1 示例配置  181 18.4.2 选项  183 18.5 批量管理镜像  188 18.6 使用通知系统  190 18.6.1 相关配置  190 18.6.2 Notif?ication的使用场景  192 18.7 本章小结  193 第19章 安全防护与配置  194 19.1 命名空间隔离的安全  194 19.2 控制组资源控制的安全  195 19.3 内核能力机制  195 19.4 Docker服务端的防护  197 19.5 更多安全特性的使用  197 19.6 使用第三方检测工具  198 19.6.1 Docker Bench  198 19.6.2 clair  199 19.7 本章小结  199 第20章 高级网络功能  201 20.1 网络启动与配置参数  201 20.2 配置容器DNS和主机名  203 20.3 容器访问控制  204 20.4 映射容器端口到宿主主机的实现  206 20.5 配置docker0网桥  207 20.6 自定义网桥  208 20.7 使用OpenvSwitch网桥  209 20.8 创建一个点到点连接  211 20.9 本章小结  212 第21章 libnetwork插件化网络功能  213 21.1 容器网络模型  213 21.2 Docker网络相关命令  215 21.3 构建跨主机容器网络  216 21.4 本章小结  219 第四部分 开源项目 第22章 Etcd——高可用的键值数据库  223 22.1 简介  223 22.2 安装和使用Etcd  224 22.3 使用etcdctl客户端  228 22.3.1 数据类操作  230 22.3.2 非数据类操作  233 22.4 Etcd集群管理  236 22.4.1 构建集群  236 22.4.2 集群参数配置  238 22.5 本章小结  240 第23章 Docker三剑客之Docker Machine  241 23.1 简介  241 23.2 安装Machine  241 23.3 使用Machine  243 23.4 Machine命令  244 23.5 本章小结  247 第24章 Docker三剑客之Docker Compose  248 24.1 简介  248 24.2 安装与卸载  249 24.3 Compose命令说明  252 24.4 Compose环境变量  257 24.5 Compose模板文件  257 24.6 Compose应用案例一:Web负载均衡  266 24.7 Compose应用案例二:大数据Spark集群  271 24.8 本章小结  273 第25章 Docker三剑客之Docker Swarm  274 25.1 简介  274 25.2 安装Swarm  275 25.3 使用Swarm  277 25.4 使用其他服务发现后端  281 25.5 Swarm中的调度器  282 25.6 Swarm中的过滤器  284 25.7 本章小结  286 第26章 Mesos——优秀的集群资源调度平台  287 26.1 简介  287 26.2 Mesos安装与使用  288 26.3 原理与架构  296 26.3.1 架构  296 26.3.2 基本单元  297 26.3.3 调度  297 26.3.4 高可用性  298 26.4 Mesos配置项解析  299 26.4.1 通用项  299 26.4.2 master专属项  299 26.4.3 slave专属项  301 26.5 日志与监控  304 26.6 常见应用框架  306 26.7 本章小结  307 第27章 Kubernetes——生产级容器集群平台  308 27.1 简介  308 27.2 核心概念  309 27.2.1 集群组件  311 27.2.2 资源抽象  312 27.2.3 辅助概念  315 27.3 快速体验  318 27.4 安装部署  322 27.5 重要组件  331 27.5.1 Etcd  332 27.5.2 kube-apiserver  332 27.5.3 kube-scheduler  333 27.5.4 kube-controller-manager  333 27.5.5 kubelet  334 27.5.6 kube-proxy  335 27.6 使用kubectl  337 27.6.1 获取kubectl  337 27.6.2 命令格式  337 27.6.3 全局参数  338 27.6.4 子命令  339 27.7 网络设计  351 27.8 本章小结  353 第28章 其他相关项目  354 28.1 平台即服务方案  354 28.1.1 Deis  354 28.1.2 Flynn  355 28.2 持续集成平台Drone  355 28.3 容器管理  357 28.3.1 Citadel  357 28.3.2 Shipyard  358 28.3.3 DockerUI  358 28.3.4 Panamax  358 28.3.5 Seagull  359 28.3.6 Dockerboard  361 28.4 编程开发  362 28.5 网络支持  363 28.5.1 pipework  363 28.5.2 Flannel   364 28.5.3 Weave Net  364 28.5.4 Calico   365 28.6 日志处理  366 28.6.1 Docker-Fluentd  366 28.6.2 Logspout  367 28.6.3 Sematext-agent-docker  368 28.7 服务代理工具  368 28.7.1 Traefik  369 28.7.2 Muguet  370 28.7.3 nginx-proxy  370 28.8 标准与规范  372 28.9 其他项目  375 28.9.1 CoreOS  375 28.9.2 OpenStack支持  375 28.9.3 dockerize  376 28.9.4 Unikernel  378 28.9.5 容器化的虚拟机  378 28.10 本章小结  379 附录A 常见问题总结  382 附录B Docker命令查询  388 附录C 参考资源链接  393
Docker入门(三) 上一节中,我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解
Docker入门(二) 上一节中,我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解
Docker入门(一) 上一节中,我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解
Docker(六)进阶:Dockerfile概述与用法(两万字入门到精通) EXPOSE指令告诉Docker容器在运行时监听指定的网口。可以指定端口侦听的协议类型是TCP还是UDP,如果不指定协议类型,默认为TCP。
Docker(二)入门:Docker底层原理和常用命令 该docker images命令采用一个可选[REPOSITORY[:TAG]]参数,将列表限制为与参数匹配的镜像。如果您指定 REPOSITORY但 no TAG,该docker images命令会列出给定存储库中的所有镜像。
Docker(一)入门:Docker的入门与安装 我们发布一个项目,可能需要Redis、Mysql、Node.js的环境,电脑上运行只需要一分钟,而环境配置可能一天都不一定,充电两小时用时五分钟的概念。