作者简介 里斯托弗·尼格斯,写了十多本关于Linux的书,包括畅销书《Red Hat Linux Bible》和《Linux Bible》。他是Red Hat认证架构师(RHCA)以及RHCE认证教练和考官。作为Red Hat的员工,他获得了RHCE和更高认证方面的Linux专业训练。目前,他是多个项目的主要作者,这些项目涉及Docker、Project Atomic、Kubernetes和OpenStack。 任发科,网名常新居士,曾任职于亚马逊中国,从事SDE和SDM的工作。具有十余年的企业软件架构、开发和管理经验,了解软件研发与运营中各环节的工作,目前从事大数据分析工具以及DevOps工具链的研发,同时关注IT研发管理和团队建设。 王东,毕业于天津大学,毕业后一直从事软件相关研发和架构设计工作,曾在普元软件任zishen架构师、在IBM GBS任咨询经理、在亚马逊任架构师等,后加入创业公司,从事研发和管理工作;热爱编程,喜欢钻研新技术,对微服务、企业架构、大数据以及DevOps有浓厚的兴趣。 目录 第一部分开启容器之旅 第1章使用Docker对应用进行容器化2 1.1了解容器化应用的优缺点2 1.1.1容器化应用不是直接在宿主机上运行的应用3 1.1.2容器化应用不是直接在虚拟机上运行的应用3 1.1.3了解容器的优点3 1.1.4了解容器化应用面临的挑战4 1.2了解容器的组成5 1.2.1Docker项目5 1.2.2DockerHubRegistry6 1.2.3Docker镜像和容器7 1.2.4docker命令7 1.3探究容器9 1.4小结10 第2章搭建容器运行时环境11 2.1标准Linux系统的Docker配置12 2.1.1Ubuntu的Docker配置12 2.1.2Fedora的Docker配置14 2.1.3RedHatEnterpriseLinux的Docker配置17 2.1.4其他操作系统的Docker配置19 2.2容器式Linux系统的Docker配置20 2.2.1AtomicHost的Docker配置21 2.2.2CoreOS的Docker配置23 2.3小结25 第3章搭建私有DockerRegistry26 3.1获取和启动私有Dockerregistry27 3.1.1在Fedora中搭建Dockerregistry27 3.1.2在Ubuntu中搭建Dockerregistry30 3.2配置私有Dockerregistry32 3.2.1配置docker—registry包32 3.2.2配置registry容器35 3.3了解Docker镜像命名空间35 3.4小结37 第二部分玩转单个容器 第4章运行容器镜像40 4.1以交互方式运行容器镜像42 4.1.1启动交互Bashshell42 4.1.2玩些基于字符的游戏44 4.1.3在容器内运行管理命令45 4.2运行容器化服务46 4.2.1运行容器化Web服务器46 4.2.2在容器中运行服务时进行资源限制48 4.3运行特权容器49 4.4小结50 第5章查找、拉取、保存和装载容器镜像51 5.1搜索镜像51 5.1.1用docker命令搜索镜像52 5.1.2在DockerHub上检索镜像54 5.2其他repository55 5.3从Registry拉取镜像57 5.4保存和装载镜像60 5.5小结61 第6章为镜像添加标签62 6.1为镜像分配名称63 6.2为镜像分配标签64 6.3为镜像分配repository名65 6.3.1为镜像附加用户名65 6.3.2为镜像附加repository名67 6.4小结68 第7章探究容器69 7.1检视镜像和容器69 7.2检视镜像70 7.2.1用dockerinspect检视基础镜像70 7.2.2用dockerinspect检视应用程序镜像72 7.2.3查看镜像的历史73 7.3检视正在运行的容器73 7.3.1启动要检视的容器73 7.3.2检视整个容器配置74 7.3.3检视单个容器属性78 7.3.4检视运行终端会话的容器79 7.3.5检视容器的内存和CPU限制80 7.3.6检视容器的SELinux上下文81 7.4寻找探查容器的更多方法82 7.4.1用dockertop查看容器进程82 7.4.2用dockerattach与容器内服务进行交互83 7.4.3用dockerexec在正在运行的容器中启动新进程83 7.4.4用dockerlogs查看容器进程的输出84 7.4.5用dockerdiff查看容器的变化84 7.4.6用dockercp从容器复制文件85 7.5小结85 第8章容器的启动、停止与重启86 8.1停止和启动容器86 8.1.1停止和启动分离的容器87 8.1.2启动和停止交互式容器88 8.2重启容器89 8.3向容器发送信号90 8.4暂停容器与取消暂停91 8.5等待容器的退出代码91 8.6重命名容器92 8.7创建容器92 8.8小结93 第9章配置容器的存储95 9.1管理容器的存储95 9.1.1使用宿主机的卷95 9.1.2数据卷容器97 9.1.3对挂载写保护97 9.1.4挂载设备98 9.1.5挂载套接字98 9.2Docker宿主机的存储策略99 9.2.1附加外部存储到Docker宿主机101 9.2.2使用逻辑卷管理器扩展存储101 9.3小结103 第10章配置容器网络104 10.1将端口暴露给其他容器105 10.2将端口映射到宿主机外部106 10.2.1从被链接的容器映射端口106 10.2.2链接不同宿主机上的容器108 10.3docker0网桥的替代方法109 10.3.1改变容器的网络模式109 10.3.2细查网络选项109 10.4修改Docker网桥111 10.5小结112 第11章清理容器113 11.1为镜像和容器准备空间113 11.2删除镜像114 11.2.1删除单个镜像114 11.2.2删除多个镜像116 11.3删除容器117 11.3.1删除单个容器117 11.3.2删除多个容器119 11.4清理和保存容器119 11.4.1清理和保存Ubuntu容器120 11.4.2清理和保存Fedora容器120 11.5小结121 第12章构建容器镜像122 12.1进行简单的Docker构建123 12.2通过Dockerfile设置要执行的命令125 12.2.1使用CMD指令125 12.2.2使用ENTRYPOINT指令126 12.2.3使用RUN指令127 12.2.4通过Dockerfile向镜像添加文件128 12.3通过Dockerfile暴露镜像的端口128 12.4在Dockerfile中设置环境变量129 12.5在Dockerfile中设置标签130 12.6使用其他dockerbuild命令选项131 12.7构建容器的技巧132 12.7.1清理镜像132 12.7.2保持构建目录较小132 12.7.3保持容器简单133 12.7.4管理进行缓存的方法133 12.8小结133 第三部分在云环境上运行容器 第13章使用超级特权容器136 13.1在AtomicHost中使用超级特权容器137 13.2了解超级特权容器137 13.2.1开放给宿主机的权限137 13.2.2访问宿主机的进程表137 13.2.3访问宿主机的网络接口138 13.2.4访问宿主机的进程间通信139 13.2.5访问宿主机的文件系统139 13.3准备使用超级特权容器140 13.4使用atomic命令140 13.4.1用atomic安装SPC镜像141 13.4.2用atomic获取SPC镜像的信息141 13.4.3用atomic运行SPC镜像142 13.4.4用atomic停止和重启SPC143 13.4.5更新SPC镜像143 13.4.6卸载SPC镜像144 13.5尝试一些SPC144 13.5.1运行RHEL工具SPC144 13.5.2运行日志记录(rsyslog)SPC145 13.5.3运行系统监控(sadc)SPC147 13.6小结149 第14章用Cockpit管理云中的容器150 14.1了解Cockpit151 14.2着手使用Cockpit154 14.3将服务器添加到Cockpit155 14.4从Cockpit管理容器156 14.4.1向Cockpit添加容器镜像156 14.4.2从Cockpit运行镜像157 14.5从Cockpit管理网络接口159 14.6从Cockpit配置存储161 14.7在Cockpit中做其他管理工作162 14.8在Cockpit中打开终端162 14.9小结163 第四部分管理多容器 第15章使用Kubernetes进行容器编排166 15.1了解Kubernetes167 15.2开始使用Kubernetes168 15.3搭建一体化Kubernetes169 15.3.1安装并启动Kubernetes170 15.3.2在Kubernetes中启动一个pod171 15.3.3使用Kubernetes173 15.4小结174 第16章创建Kubernetes集群176 16.1了解Kubernetes的高级特性176 16.2搭建Kubernetes集群177 16.2.1第1步:安装Linux177 16.2.2第2步:搭建Kubernetesmaster178 16.2.3第3步:搭建Kubernetesnode180 16.2.4第4步:用Flannel进行网络设置181 16.3启动Kubernetes集群中的pod182 16.4删除复制控制器、服务和pod186 16.5小结187 第五部分开发容器 第17章开发Docker容器190 17.1为容器开发做好准备190 17.1.1为RedHat系统选择容器开发环境190 17.1.2来自Docker的容器开发环境194 17.2采用良好的开发实践195 17.2.1将文件包含到构建中或排除出去195 17.2.2利用分层196 17.2.3管理构建中的软件包197 17.3进一步了解容器构建198 17.4小结198 第18章探索Dockerfile文件示例199 18.1细察官方Docker镜像的Dockerfile200 18.1.1查看CentOS的Dockerfile200 18.1.2查看busybox的Dockerfile202 18.2细察来自开源项目的Dockerfile203 18.2.1查看WordPress的Dockerfile203 18.2.2查看MySQL的Dockerfile205 18.3细察桌面和个人使用的Dockerfile207 18.3.1查看Chrome的Dockerfile207 18.3.2查看Firefox的Dockerfile210 18.4小结213 内容推荐 本书是Linux系统及云环境上运行Docker的实用指南。本书分成5个部分。第一部分介绍使用Docker容器所需了解的知识;第二部分介绍如何通过docker命令直接使用单个容器;第三部分描述如何运行SPC,如何使用Cockpit在云环境或者本地环境下跨多个宿主机管理容器;第四部分探究容器 |