pdf文档 Docker —— 从入门到实践-12202257

7.32 MB 395 页 1 下载 28 浏览 0 评论 0 收藏
语言 格式 评分
中文(简体)
.pdf
3
概览
目 录 前言 修订记录 如何贡献 Docker 简介 什么是 Docker 为什么要用 Docker 基本概念 镜像 容器 仓库 安装 Docker Ubuntu Debian Fedora CentOS Raspberry Pi Linux 离线安装 macOS Windows 10 镜像加速器 开启实验特性 使用镜像 获取镜像 列出镜像 删除本地镜像 利用 commit 理解镜像构成 使用 Dockerfile 定制镜像 Dockerfile 指令详解 COPY 复制文件 ADD 更高级的复制文件 CMD 容器启动命令 ENTRYPOINT 入口点 ENV 设置环境变量 ARG 构建参数 VOLUME 定义匿名卷 EXPOSE 暴露端口 WORKDIR 指定工作目录 USER 指定当前用户 HEALTHCHECK 健康检查 - 2 - 本文档使用 看云 构建 ONBUILD 为他人作嫁衣裳 LABEL 为镜像添加元数据 SHELL 指令 参考文档 Dockerfile 多阶段构建 实战多阶段构建 Laravel 镜像 构建多种系统架构支持的 Docker 镜像 其它制作镜像的方式 实现原理 操作容器 启动 守护态运行 终止 进入容器 导出和导入 删除 访问仓库 Docker Hub 私有仓库 私有仓库高级配置 Nexus 3 数据管理 数据卷 挂载主机目录 使用网络 外部访问容器 容器互联 配置 DNS 高级网络配置 快速配置指南 容器访问控制 端口映射实现 配置 docker0 网桥 自定义网桥 工具和示例 编辑网络配置文件 实例:创建一个点到点连接 Docker Buildx BuildKit 使用 buildx 构建镜像 使用 buildx 构建多种系统架构支持的 Docker 镜像 Docker Compose - 3 - 本文档使用 看云 构建 简介 安装与卸载 使用 命令说明 Compose 模板文件 实战 Django 实战 Rails 实战 WordPress 实战 LNMP Swarm mode 基本概念 创建 Swarm 集群 部署服务 使用 compose 文件 管理密钥 管理配置信息 滚动升级 安全 内核命名空间 控制组 服务端防护 内核能力机制 其它安全特性 总结 底层实现 基本架构 命名空间 控制组 联合文件系统 容器格式 网络 Etcd 项目 简介 安装 集群 使用 etcdctl Fedora CoreOS 简介 安装 Kubernetes - 开源容器编排引擎 简介 基本概念 - 4 - 本文档使用 看云 构建 架构设计 部署 Kubernetes 使用 kubeadm 部署 kubernetes 在 Docker Desktop 使用 一步步部署 kubernetes 集群 部署 Dashboard Kubernetes 命令行 kubectl 容器与云计算 简介 腾讯云 阿里云 亚马逊云 小结 实战案例 - 操作系统 Busybox Alpine Debian Ubuntu CentOS Fedora 本章小结 实战案例 - CI/CD GitHub Actions Drone 部署 Drone Travis CI 在 IDE 中使用 Docker VS Code podman - 下一代 Linux 容器工具 附录 附录一:常见问题总结 附录二:热门镜像介绍 Ubuntu CentOS Nginx PHP Node.js MySQL WordPress MongoDB Redis Minio 附录三:Docker 命令查询 客户端命令 - docker - 5 - 本文档使用 看云 构建 服务端命令 - dockerd 附录四:Dockerfile 最佳实践 附录五:如何调试 Docker 附录六:资源链接 归档 Mesos - 优秀的集群资源调度平台 Mesos 简介 安装与使用 原理与架构 Mesos 配置项解析 日志与监控 常见应用框架 本章小结 Docker Machine 安装 使用 Docker Swarm - 6 - 本文档使用 看云 构建 前言 Docker — 从入门到实践 release release v1.2.0 v1.2.0 Based Based Docker CE v20.10 Docker CE v20.10 Docker 技术入门与实战 Docker 技术入门与实战 jd.com jd.com v1.3.0 语言 - 简体中文 阅读 us-en 阅读 Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算 应用开发的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松! 无论是应用开发者、运维人员、还是其他信息技术从业人员,都有必要认识和掌握 Docker,节约有限的生命。 本书既适用于具备基础 Linux 知识的 Docker 初学者,也希望可供理解原理和实现的高级用户参考。同时,书中 给出的实践案例,可供在进行实际部署时借鉴。前六章为基础内容,供用户理解 Docker 的基本概念和操作;7 ~ 9 章介绍包括数据管理、网络等高级操作;第 10 ~ 12 章介绍了容器生态中的几个核心项目;13、14 章讨论 了关于 Docker 安全和实现技术等高级话题。后续章节则分别介绍包括 Etcd、Fedora CoreOS、Kubernetes、 容器云等相关热门开源项目。最后,还展示了使用容器技术的典型的应用场景和实践案例。 在线阅读:docker-practice.com,GitBook,Github 离线阅读 $ docker run -it --rm -p 4000:80 ccr.ccs.tencentyun.com/dockerpracticesig/docker_practice:vuepress Docker 自身仍在快速发展中,生态环境也在蓬勃成长。建议初学者使用最新稳定版本的 Docker 进行学习实 践。欢迎 参与项目维护。 修订记录 贡献者名单 微信小程序 前言 - 7 - 本文档使用 看云 构建 微信扫码 随时随地阅读~ 技术交流 微信扫码 加入群聊~ 或者微信添加 dpsigs 邀请入群 欢迎加入 Docker 技术交流 QQ 群,分享 Docker 资源,交流 Docker 技术。 QQ 群 I (已满):341410255 QQ 群 II (已满):419042067 QQ 群 III (已满):210028779 QQ 群 IV (已满):483702734 QQ 群 V (已满):460598761 QQ 群 VI (已满):581983671 QQ 群 VII (已满):252403484 QQ 群 VIII(已满):544818750 QQ 群 IX (已满):571502246 QQ 群 X (可加):145983035 如果有容器相关的疑问,请通过 Issues 来提出。 进阶学习 《Docker 技术入门与实战》第三版已经面世,介绍最新的容器技术栈,欢迎大家阅读使用并反馈建议。 前言 - 8 - 本文档使用 看云 构建 京东图书 China-Pub 鼓励项目 欢迎鼓励项目一杯 coffee~ 前言 - 9 - 本文档使用 看云 构建 修订记录 修订记录 1.3.0 2021-YY-DD 全面支持 Docker v20.10 新版本 1.2.0 2020-12-20 错误修复 1.1.0 2019-12-31 全面支持 Docker v19.03 新版本 增加 BuildKit 增加 docker buildx 命令使用说明 增加 docker manifest 命令使用说明 移除 Ubuntu 14.04 Debian 8 Debian 7 1.0.0: 2018-12-31 全面支持 Docker v18.x 新版本 添加如何调试 Docker 错误修正 0.9.0: 2017-12-31 对 v1.13.x 旧版本的最后支持 0.9.0-rc2: 2017-12-10 增加 Docker 中文资源链接 增加介绍基于 Docker 的 CI/CD 工具 Drone 增加 docker secret 相关内容 增加 docker config 相关内容 增加 LinuxKit 相关内容 更新 CoreOS 章节 更新 etcd 章节,基于 3.x 版本 删除 Docker Compose 中的 links 指令 替换 docker daemon 命令为 dockerd 替换 docker ps 命令为 docker container ls 替换 docker images 命令为 docker image ls 修改 安装 Docker 一节中部分文字表述 移除历史遗留文件和错误的文件 优化文字排版 修订记录 - 10 - 本文档使用 看云 构建 调整目录结构 修复内容逻辑错误 修复 404 链接 0.9.0-rc1: 2017-11-29 根据最新版本(v17.09)修订内容 增加 Dockerfile 多阶段构建( multistage builds ) Docker 17.05 新增特性 增加 docker exec 子命令介绍 增加 docker 管理子命令 container image network volume 介绍 增加 树莓派单片电脑 安装 Docker 增加 Docker 存储驱动 OverlayFS 相关内容 更新 Docker CE v17.x 安装说明 更新 Docker 网络 一节 更新 Docker Machine 基于 0.13.0 版本 更新 Docker Compose 基于 3 文件格式 删除 Docker Swarm 相关内容,替换为 Swarm mode Docker 1.12.0 新增特性 删除 docker run --link 参数 精简 Docker Registry 一节 替换 docker run -v 参数为 --mount 修复 404 链接 优化文字排版 增加离线阅读功能 0.8.0: 2017-01-08 修正文字内容 根据最新版本(1.12)修订安装使用 补充附录章节 0.7.0: 2016-06-12 根据最新版本进行命令调整 修正若干文字描述 0.6.0: 2015-12-24 补充 Machine 项目 修正若干 bug 0.5.0: 2015-06-29 添加 Compose 项目 添加 Machine 项目 添加 Swarm 项目 修订记录 - 11 - 本文档使用 看云 构建 完善 Kubernetes 项目内容 添加 Mesos 项目内容 0.4.0: 2015-05-08 添加 Etcd 项目 添加 Fig 项目 添加 CoreOS 项目 添加 Kubernetes 项目 0.3.0: 2014-11-25 完成仓库章节 重写安全章节 修正底层实现章节的架构、命名空间、控制组、文件系统、容器格式等内容 添加对常见仓库和镜像的介绍 添加 Dockerfile 的介绍 重新校订中英文混排格式 修订文字表达 发布繁体版本分支:zh-Hant 0.2.0: 2014-09-18 对照官方文档重写介绍、基本概念、安装、镜像、容器、仓库、数据管理、网络等章节 添加底层实现章节 添加命令查询和资源链接章节 其它修正 0.1.0: 2014-09-05 添加基本内容 修正错别字和表达不通顺的地方 修订记录 - 12 - 本文档使用 看云 构建 如何贡献 如何贡献 领取或创建新的 Issue,如 issue 235,添加自己为 Assignee 。 在 GitHub 上 fork 到自己的仓库,如 docker_user/docker_practice ,然后 clone 到本地, 并设置用户信息。 $ git clone git@github.com:docker_user/docker_practice.git $ cd docker_practice 修改代码后提交,并推送到自己的仓库,注意修改提交消息为对应 Issue 号和描述。 # Update the content $ git commit -a -s # In commit msg dialog, add content like "Fix issue #235: describe ur change" $ git push 在 GitHub 上提交 Pull Request ,添加标签,并邀请维护者进行 Review 。 定期使用项目仓库内容更新自己仓库内容。 $ git remote add upstream https://github.com/yeasy/docker_practice $ git fetch upstream $ git rebase upstream/master $ git push -f origin master 排版规范 本开源书籍遵循 中文排版指南 规范。 如何贡献 - 13 - 本文档使用 看云 构建 Docker 简介 简介 本章将带领你进入 Docker 的世界。 什么是 Docker? 用它会带来什么样的好处? 好吧,让我们带着问题开始这神奇之旅。 Docker 简介 - 14 - 本文档使用 看云 构建 什么是 Docker 什么是 Docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代 码在 GitHub 上进行维护。 Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。 Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目 已经超过 5 万 7 千个星标和一万多个 fork 。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。 Docker 最初 是在 Ubuntu 12.04 上开发实现的; Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持; Google 也在其 PaaS 产品中广泛应用 Docker 。 Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace, 以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进 程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC ,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。 runc 是一个 Linux 命令行工具,用于根据 OCI容器运行时规范 创建和运行容器。 什么是 Docker - 15 - 本文档使用 看云 构建 containerd 是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功 能集。 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的 创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。 下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一 个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自 己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。 什么是 Docker - 16 - 本文档使用 看云 构建 为什么要用 Docker 为什么要使用 Docker? 作为一种新兴的虚拟化方式, Docker 跟传统的虚拟化方式相比具有众多的优势。 更高效的利用系统资源 由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销, Docker 对系统资源的利用率更高。无论是 应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同 配置的主机,往往可以运行更多数量的应用。 更快速的启动时间 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启 动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。 一致的运行环境 开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未 在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性, 从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。 持续交付和部署 对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。 使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进 行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境 中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。 而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应 用运行所需条件,帮助更好的生产环境中部署该镜像。 更轻松的迁移 由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。 Docker 可以在很多平台上运行,无 论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个 平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。 更轻松的维护和扩展 Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简 为什么要用 Docker - 17 - 本文档使用 看云 构建 单,基于基础镜像进一步扩展
下载文档到本地,方便使用
共 395 页, 还有 393 页可预览, 继续阅读
文档评分
请文明评论,理性发言.