![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Docker 核心知识必知必会
深入底层解读 Docker 核心技术
优惠券已抵扣
余额抵扣
还需支付
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
张晋涛-MoeLove
Container, Docker, Go, Kubernetes, Python, Vim; he/him;
展开
-
Docker:容器时代的引领者
Docker 的发展历史大家好,我是张晋涛,自 Docker 0.9 版本开始了自己的 Docker 之路后,到现在 Docker 19.03 版本也已经发布,大大小小的坑踩过无数个,也在实践和参与社区贡献的过程中积累了很多经验。2013 年 Docker 第一次在 PyCon 上亮相,随后在 Hacker News 上引起了强烈的反响,之后在 GitHub 上开源,从此它正式开启了 Dock...原创 2020-09-22 11:56:34 · 1254 阅读 · 0 评论 -
Docker 的前世今生
这是本专栏的第一部分:Docker 入门,共 3 篇,将带大家进入 Docker 的世界。首先了解 Docker 的发展历程,然后快速掌握 Docker 的基本使用;Docker 版本及内核兼容性选择是这部分的重点内容。大家如果在生产环境中需要使用 Docker 的话,建议重点关注这一篇。 下面我们就进入第一篇的内容。Docker 在大多数人眼中几乎是容器(container)的代名...原创 2020-09-22 11:56:32 · 482 阅读 · 0 评论 -
Docker 的基本使用
这是本专栏的第一部分:Docker 入门,共 3 篇,带大家进入 Docker 的世界。上一节,我带大家了解了 Docker 和容器技术的发展历程,知道了它的基础技术发展路线。下面一起进入第二节的内容。Docker 安装Docker 支持 Linux、MacOS 和 Windows 等系统,且在 Linux 的各发行版中的安装步骤也都略有差异。这里我不会列出它在各个系统平台上的具体安...原创 2020-09-22 11:56:31 · 187 阅读 · 0 评论 -
Docker 版本及内核兼容性选择
这是本课程的第一部分:Docker 入门,共 3 节,帮助大家进入 Docker 的世界。上一节,我带大家了解了 Docker 入门的基础知识,知道了如何运行和操作容器。下面我们一起进入第三节的内容。Docker 的版本历程快速迭代期在第一节,我们已经知道 Docker 是在 2013 年首次亮相,在 2014 年 6 月 9 日发布了 1.0.0 版本;直到 2017 年,Dock...原创 2020-09-22 11:56:29 · 3385 阅读 · 1 评论 -
容器生命周期管理(上)
这是本课程的第二部分:容器篇,共 6 节,帮助大家由浅入深地认识和掌握容器。这一节和下一节,我会为你介绍容器生命周期管理相关的内容,带你掌握容器生命周期。下面我们一起进入第一节的内容,主要涉及容器状态的变化。在第一部分第二节《Docker 的基本使用》中,我为你介绍了 Docker 的基本使用,包括使用 docker run 启动一个容器,使用 docker exec 进入一个正在运行的...原创 2020-09-22 11:56:28 · 302 阅读 · 0 评论 -
容器生命周期管理(下)
容器生命周期管理(下) 这是本课程的第二部分: 容器篇,共 6 篇,帮助大家由浅入深地认识和掌握容器。上一篇和本篇,我会为你介绍容器生命周期管理相关的内容,带你掌握容器生命周期。下面我们一起进入第二篇的内容,主要涉及容器状态的变化。删除容器上一篇已经介绍了容器的创建,暂停以及停止等操作,并且一般情况下即使容器被 stop 掉它仍然存在于机器上,通过 docker ps -a 仍然可以查...原创 2020-09-22 11:56:26 · 151 阅读 · 0 评论 -
容器资源管理
容器资源管理 这是本课程的第二部分: 容器篇,共 6 篇,帮助大家由浅入深的认识和掌握容器。前两篇,我为你介绍了容器生命周期管理相关的内容,带你掌握容器生命周期。本篇我将为你介绍容器资源管理相关的内容。前两篇我已经为你介绍了容器生命周期管理相关的内容,本篇的主题是容器资源管理。我们带着以下三个问题开始本篇的内容:哪些分配给容器的资源可被我们管理容器实际使用了多少资源如何对容器使用...原创 2020-09-22 11:56:25 · 440 阅读 · 0 评论 -
深入剖析容器
这是本专栏的第二部分:容器篇,共 6 篇,帮助大家由浅入深的认识和掌握容器。前面,我为你介绍了容器生命周期管理和资源管理相关的内容,让你对容器有了更加灵活的控制。本篇,我来为你深入剖析容器,从本质上理解到底容器是什么。在正式开始之前,我们总结一下到目前为止的学习:使用 Docker 相关的一些命令可以完成对容器生命周期的管理,包括启动、暂停、停止、删除等;通过 docker upd...原创 2020-09-22 11:56:23 · 136 阅读 · 0 评论 -
容器的核心:Cgroups
这是本专栏的第二部分:容器篇,共 6 篇,帮助大家由浅入深的认识和掌握容器。前面,我为你介绍了容器生命周期和资源管理相关的内容,让你对容器有了更加灵活的控制。之后从进程的角度带你认识了容器的本质还是一组进程。本篇,我来为介绍容器的核心——cgroups。什么是 cgroups先引用一句 Wiki 上对 cgroups 的定义: cgroups,其名称源自控制组群(control ...原创 2020-09-22 11:56:22 · 428 阅读 · 0 评论 -
容器的核心:Namespace
这是本专栏的第二部分:容器篇,共 8 篇,帮助大家由浅入深地认识和掌握容器。前面,我为你介绍了容器生命周期和资源管理相关的内容,让你对容器有了更加灵活的控制。之后从进程的角度带你认识了容器以及容器核心技术之一的 cgroups。本篇,我来为介绍容器的另一项核心技术:namespace。什么是 namespace我们仍然以 Wiki 上对 namespace 的定义开始: Name...原创 2020-09-22 11:56:20 · 851 阅读 · 0 评论 -
自己动手写容器(上)
自己动手写容器(上) 这是本课程的第二部分:容器篇,共 8 篇,帮助大家由浅入深地认识和掌握容器。前面,我为你介绍了容器生命周期和资源管理相关的内容,让你对容器有了更加灵活的控制。之后从进程的角度带你认识了容器以及容器的两项核心技术 cgroups 和 namespace。本篇,我们进入实践环节,自己动手写容器,以便让你对容器有更加深刻的理解和认识。经过了前面内容的学习,想必你对 Do...原创 2020-09-22 11:56:18 · 422 阅读 · 0 评论 -
自己动手写容器(下)
这是本课程的第二部分:容器篇,共 8 篇,帮助大家由浅入深地认识和掌握容器。前面,我为你介绍了容器生命周期和资源管理相关的内容,让你对容器有了更加灵活的控制。之后从进程的角度带你认识了容器以及容器的两项核心技术 cgroups 和 namespace。上篇和本篇,我们进入实践环节,自己动手写容器,以便让你对容器有更加深刻的理解和认识。在上一篇中,我们利用 namespace 和 chro...原创 2020-09-22 11:56:17 · 180 阅读 · 0 评论 -
镜像生命周期管理
这是本课程的第三部分:镜像篇,共 8 篇,帮助你由浅入深地认识和掌握 Docker 镜像的管理、构建、分发及原理。同时会深入源码了解 Docker 的构建系统,之后会结合实际经验,为你介绍如何在生产环境中对镜像镜像优化。下面我们一起进入第一篇的内容,主要涉及镜像的生命周期管理。 备注:为了避免术语的混淆,本课程中的“镜像”均指“Docker Image”,源码解析使用的是 Docker ...原创 2020-09-22 11:56:16 · 460 阅读 · 0 评论 -
构建镜像和分发
这是本专栏的第三部分:镜像篇,共 8 篇。上一篇我为你介绍了镜像生命周期的管理。本篇和下一篇,我会为你介绍镜像的构建和分发,带你理解 Docker 所带来的优势及其所需技能。下面我们一起进入本篇的学习。本地镜像存储上一篇,我为你介绍了镜像生命周期管理,其中我为你介绍了可以通过 docker pull、docker load、docker import、docker commit 和 d...原创 2020-09-22 11:56:14 · 271 阅读 · 0 评论 -
Dockerfile 基础介绍
这是本专栏的第三部分:镜像篇,共 8 篇。前两篇我为你介绍了 Docker 镜像生命周期的管理,以及镜像的构建和分发方式。本篇,我来为你介绍 Dockerfile 带你理解 Dockerfile 中的重点知识,方便你自己定义构建镜像的行为。下面我们一起进入本篇的学习。Dockerfile 基本格式在前面的内容中,我有写过几个 Dockerfile,但是并没有对它做过多介绍。这里,我们来...原创 2020-09-22 11:56:13 · 128 阅读 · 0 评论 -
Docker 下一代构建系统
这是本课程的第三部分:镜像篇,共 8 篇。前三篇我分别为你介绍了如何对 Docker 镜像进行生命周期的管理,以及如何使用 Dockerfile 进行镜像的构建和分发。本篇,我来为你介绍 Docker 的下一代构建系统——BuildKit,带你了解 Docker 构建系统的发展方向及掌握最新核心特性。下面我们一起进入本篇的学习。Docker 整体结构介绍(图片来源:Docker ov...原创 2020-09-22 11:56:12 · 185 阅读 · 0 评论 -
Dockerfile 优化和最佳实践
这是本课程的第三部分:镜像篇,共 8 篇。前四篇我分别为你介绍了如何对 Docker 镜像进行生命周期的管理,如何使用 Dockerfile 进行镜像的构建和分发以及 Docker 的构建系统和下一代构建系统——BuildKit。下面我们一起进入本篇的学习。在前期的课程中,我们已经知道使用 Dockerfile 构建镜像,是当前最为普遍,也最为标准的方式。随着业务容器化进度的推进,以及...原创 2020-09-22 11:56:10 · 159 阅读 · 0 评论 -
镜像构建原理
这是本专栏的第三部分:镜像篇,共 8 篇。前五篇我分别为你介绍了如何对 Docker 镜像进行生命周期的管理,如何使用 Dockerfile 进行镜像的构建和分发,Docker 的构建系统和下一代构建系统——BuildKit 以及 Dockerfile 的优化和实践。下面我们一起进入本篇镜像构建原理的学习。Docker 架构概览在前两篇《Docker 下一代构建系统》 中,我为你介绍了...原创 2020-09-22 11:56:08 · 217 阅读 · 0 评论 -
镜像分发原理
这是本专栏的第三部分:镜像篇,共 8 篇。前六篇我分别为你介绍了如何对 Docker 镜像进行生命周期的管理,如何使用 Dockerfile 进行镜像的构建和分发,Docker 的构建系统和下一代构建系统——BuildKit,Dockerfile 的优化和实践,以及深入源码介绍了 Docker 镜像构建的原理。下面我们一起进入本篇镜像分发原理的学习。通过前面内容的学习,我们知道 Dock...原创 2020-09-22 11:56:07 · 731 阅读 · 0 评论 -
认证流程和原理
这是本专栏的第三部分:镜像篇,共 8 篇。前七篇我分别为你介绍了如何对 Docker 镜像进行生命周期的管理,如何使用 Dockerfile 进行镜像的构建和分发,Docker 的构建系统和下一代构建系统——BuildKit,Dockerfile 的优化和实践以及深入源码介绍了 Docker 镜像构建和镜像分发的原理原理。下面我们一起进入本篇认证流程和原理的学习。通过前面内容的学习,想必...原创 2020-09-22 11:56:05 · 175 阅读 · 0 评论 -
将 Docker 用于 CI/CD pipeline 中
本节和下一节这两节内容是特别增加的 CI/CD 相关的内容,主要目标是将前面所学内容应用于实践中。本节主要会为你介绍几种将 Docker 应用于 CI/CD pipeline 中的方式,下一节会介绍完整的实践。通过前面课程的学习,我们已经知道了 Docker 是 C/S 架构,我们平时使用的 docker 命令是它的 CLI,通过 API 与 Docker Daemon 进行交互,最终由...原创 2020-09-22 11:56:04 · 196 阅读 · 0 评论 -
适用于生产环境的通用型 CI/CD pipeline
上一篇和本篇这两篇内容是特别增加的 CI/CD 相关的内容,主要目标是将前面所学内容应用于实践中。上篇主要会为你介绍几种将 Docker 应用于 CI/CD pipeline 中的方式,本篇会介绍完整的实践。上一篇,我们的重点是“如何用 Docker”,分别介绍了 CI/CD pipeline 如何在物理机环境及容器环境使用 Docker。你可以对比实际的需求或是权衡利弊来选择以下方案中...原创 2020-09-22 11:56:02 · 417 阅读 · 0 评论 -
Docker 核心架构及拆解(上)
从本篇起,我们将正式进入本课程第四部分“架构篇”的内容。这个部分会涉及到 Docker 的架构及各个组件间的分工协作,对 Docker Plugin 的扩展,Docker 的日志和监控实践,以及在使用 Docker 时可能遇到的问题及排查思路等内容。本篇,我会为你从较高的层次来介绍 Docker 的核心架构,之后两篇则会深入其中,做更为细致的讲解。之后 Docker Plugin 实践...原创 2020-09-22 11:56:00 · 186 阅读 · 0 评论 -
Docker 核心架构及拆解(中)
上一篇,我们正式进入了本课程第四部分 “架构篇”的学习。本篇是第一个主题 “Docker 核心架构及拆解” 的中篇。在上一篇中,我为你从较高的层次介绍了 Docker 基础的核心组件,包括 containerd 和 runc 等相关组件,知道了容器创建的一个基本的组件间的调用关系。本篇,我来为你介绍尚未介绍到的其他相关组件。docker-proxy我们来回忆下之前介绍过的,如何将容器的...原创 2020-09-22 11:55:59 · 168 阅读 · 0 评论 -
Docker 核心架构及拆解(下)
本篇是课程第四部分“架构篇”的第一个主题“Docker 核心架构及拆解”的下篇。在前两篇中,我分别为你介绍了 docker、containerd、runc 相关的组件,以及 docker-proxy 和 docker-init。本篇,我们来将 Docker 的这些组件组织起来,看看这些组件是如何构建 Docker 核心架构的。docker 与 containerd为了更好地理解 Doc...原创 2020-09-22 11:55:57 · 156 阅读 · 0 评论 -
Docker 内部组件协作原理
本篇是专栏第四部分“架构篇”的第四篇,前面三篇内容,我为你介绍了 Docker 的核心组件及其相关功能。本篇,我们从容器创建的角度来看看 Docker 内部这些组件之间协作的原理。经过前面内容的学习,想必你已经对 Docker 的核心组件有了一些认识。本篇我们从容器创建的角度,来看看 Docker 的这些组件是如何协作的。本篇使用 Docker CE v19.03.5 的源码进行介绍。...原创 2020-09-22 11:55:56 · 234 阅读 · 0 评论 -
Plugin 扩展
本篇是第四部分“架构篇”的第五篇,前面几篇我主要为你介绍了 Docker 自身的核心组件及其协作的流程等内容。本篇,我来为你介绍 Docker 的 Plugin 系统。Docker 的 Plugin 系统之前的内容中,我为你介绍的 Docker 相关的功能或者原理基本都是 Docker 原生的,在你正确安装 Docker 后,便可以使用这些功能了。但有些特定场景下,Docker 原生...原创 2020-09-22 11:55:54 · 179 阅读 · 0 评论 -
容器监控实践
本篇是第四部分“架构篇”的第六篇,前面几篇我主要为你介绍了 Docker 核心组件及使用 Plugin 对其进行扩展。本篇,我来为你介绍 Docker 的监控实践。当我们在生产环境中使用 Docker 时,监控是非常重要的一环,通过监控告警我们可以及时了解到 Docker 及容器的运行状况,以便尽早进行应对。当提到容器监控的时候,其实不只是包含对容器自身的监控,本篇我们分别从以下四个方...原创 2020-09-22 11:55:52 · 376 阅读 · 0 评论 -
容器日志实践
本节是第四部分“架构篇”的第七节,前面几节我主要为你介绍了 Docker 核心组件和 Plugin,以及监控相关的内容。本节,我来为你介绍 Docker 的日志实践。监控有助于我们及时了解线上服务的运行状况,而日志既可以作为监控的一项“数据源”,又可以作为排查问题的一个关键手段,同时日志还可以后续做离线分析等,日志的重要性不言而喻。对于一些公司而言,无论是否在做容器化的改造,集中式的日...原创 2020-09-22 11:55:51 · 124 阅读 · 0 评论 -
容器单机编排实践之 docker-compose
本节是第四部分“架构篇”的第八节,前面几节除了 Docker 核心组件与 Plugin 外,我还为你介绍了 Docker 的监控和日志。本节,我来为你介绍 Docker 容器的单机编排工具 docker-compose。在之前章节中,我们大多都是启动一个独立的容器,并用它进行相关的实践。但在实际生产或者项目中使用 Docker 容器时,往往不是一个容器就能满足需求的。比如对于一个常规的...原创 2020-09-22 11:55:50 · 253 阅读 · 0 评论 -
Docker 问题定位与调试
本节是第四部分“架构篇”的第九节,也是本部分的最后一节,前面几节除了 Docker 核心组件与 Plugin 外,我还为你介绍了 Docker 的监控和日志以及容器的单机编排工具——docker-compose 等,本节,我将为你介绍 Docker 常见问题定位与调试相关的内容。有了前面内容的铺垫,想必你对 Docker 已经有了不少了解,以及会使用 Docker 完成一些工作。但是在使...原创 2020-09-22 11:55:48 · 199 阅读 · 0 评论 -
持久化 - volume
本篇是第五部分“存储篇”的第一篇,在这个部分,我将用三篇内容为你介绍 Docker 存储相关的内容,以及深入理解 Overlay2 存储驱动的工作原理。通过前面“容器篇”和“镜像篇”的介绍,我们知道 Docker 容器可以近似理解为镜像的运行时实例,默认情况下也算是在镜像层的基础上增加了一个可写层。所以,一般情况下如果你在容器内做出的修改,均包含在这个可写层中。当容器被删除后,这些修...原创 2020-09-22 11:55:46 · 203 阅读 · 0 评论 -
数据备份和恢复
本篇是第五部分“存储篇”的第二篇,上一篇我为你介绍了 Docker volume 的生命周期管理相关的内容,本篇我将为你介绍基于 Docker volume 的数据备份和恢复。我们在使用 Docker 时,难免会有数据备份和恢复相关的需求,尤其是处理与数据库等有状态的应用有关的问题时。一般情况下,我们可能会选择将数据先备份至硬盘上,再拷贝至其他目标位置,最后进行数据恢复。另外一种选择...原创 2020-09-22 11:55:45 · 131 阅读 · 0 评论 -
深入存储驱动:Overlay2
本节是第五部分“存储篇”的最后一节,前两节我主要为你介绍了 Docker volume 及其应用,本节我将为你介绍 Docker 现在推荐的存储驱动 Overlay2 。本节,我将为你介绍 Docker 现在推荐使用的存储驱动 Overlay2,在开始之前,你可以执行以下命令来查看 Docker 正在使用的存储驱动:(MoeLove) ➜ ~ docker info --format...原创 2020-09-22 11:55:43 · 813 阅读 · 0 评论 -
容器镜像安全
本篇是第六部分“安全篇”的第一篇,在这个部分,我将用四篇内容为你介绍包括镜像,容器和 Linux 内核的 LSM 等内容。本篇,我们将重点放在容器镜像安全上。通过前面内容的学习,我们已经知道用 Docker 启动容器的一个必备前提是需要有镜像存在,无论该镜像是存储在本地还是从 registry 下载。在我们启动容器时,对镜像内容本身是无法进行修改的,如果我们使用了被攻击的恶意镜像,那很...原创 2020-09-22 11:55:42 · 627 阅读 · 0 评论 -
容器可用安全策略
本节是第六部分“安全篇”的第二篇,在这个部分,我将用四篇内容为你介绍包括镜像,容器和 Linux 内核的 LSM 等内容。上篇,我为你介绍了容器镜像安全相关的内容。本篇,我们将重点放在容器安全上。在第一部分“容器篇”中,我已经带你深入剖析了 Docker 容器的本质,以及其所用到的核心技术 cgroups 和 namespace。在上一篇中,我为你介绍了镜像安全相关的内容,分享了一些思...原创 2020-09-22 11:55:40 · 217 阅读 · 0 评论 -
通过 LSM 赋予容器运行时安全保障
本篇是第六部分“安全篇”的第三篇,在这个部分,我将用四篇内容为你介绍包括镜像,容器和 Linux 内核的 LSM 等内容。前面两篇,我为你介绍了镜像及容器安全相关的内容。本篇,我们将重点放在 Linux 内核为容器提供的安全保障上。上一篇,我为你介绍了如何通过 Linux capabilities 来为容器提供安全的能力。本篇,我们继续将焦点放在容器安全上。注意:本文所用的 Linux...原创 2020-09-22 11:55:39 · 249 阅读 · 0 评论 -
Docker 与 seccomp 之间的联系
本篇是第六部分“安全篇”的最后一篇,前面三篇,我为你介绍了镜像及容器安全相关的内容以及 Linux 的 LSM 如何为容器安全保驾护航。本篇,我们将重点放在 Linux 内核中 seccomp 与 Docker 之间的联系。前面两篇,我分别为你介绍了如何使用 Linux capabilities 和 Linux LSM 模块为 Docker 容器提供安全的能力。本篇,我们将继续容器安全的...原创 2020-09-22 11:55:37 · 946 阅读 · 0 评论 -
Docker 网络基础
本篇是第七部分“网络篇”的第一篇。在这个部分,我会为你由浅入深的介绍 Docker 网络相关的内容。包括 Docker 网络基础及其实现和内部原理等。本篇,我先来为你介绍 Docker 网络基础。Docker 网络之前的内容中,我已经为你介绍过很多使用 Docker 来管理容器,或是增强容器安全等内容。在本篇中,我将为你介绍 Docker 网络相关的内容。在《深入剖析容器》 和 《容...原创 2020-09-22 11:55:36 · 116 阅读 · 0 评论 -
定制 bridge
本篇是第七部分“网络篇”的第二篇。在这个部分,我会为你由浅入深的介绍 Docker 网络相关的内容。包括 Docker 网络基础及其实现和内部原理等。上篇,我已经为你介绍了 Docker 网络基础。本篇,我们将重点放在 bridge 网络上。在上篇《Docker 网络基础》中,我们已经知道 Docker 常见的几种网络模式。其中最为常用的,也是通常默认使用的模式便是 bridge 网络了...原创 2020-09-22 11:55:35 · 150 阅读 · 0 评论