阅读 444

必知必会的 Docker 核心知识

自 2013 年起,随着 Docker 的正式面世,容器技术迅速成为了基础技术领域中的热门。而在近两三年中,随着容器编排领域的混战结束,Kubernetes 已经成为了容器编排领域事实上的标准。

有一些人存在误解,认为 Kubernetes 的出现取代了 Docker。但事实上,Docker 与 Kubernetes 是相辅相成的。Kubernetes 使用 Docker 作为容器运行时,用来启动应用;当 Docker 容器规模变大时,自然是需要有容器编排工具进行管理的。引用最近一次的网络研讨会后的文章内容:

In fact, Kubernetes is better with Docker. And Docker is better with Kubernetes.

无论在使用 Docker 或是 Kubernetes 亦或者是使用基于这些技术的其他衍生技术时,都有可能会遇到一些意料之外的情况,当问题发生时,我们总是希望可以快速定位问题,并且从根本上解决问题。

一般情况下,上层的问题比较容易解决,但如果问题发生在运行时/Docker 或容器上时,如果没有系统性的知识,很难从根本上解决问题;当然,有些时候通过搜索引擎可以帮我们找到一些问题的解决办法,但如果不将其彻底搞懂,以后遇到类似问题可能还是没法快速解决。

我自 Docker 0.9 版本时开始学习和使用,自己踩过了很多坑,活跃在社区中,也帮别人解决了很多问题。现在我的新专栏《Docker 核心知识必知必会》正式上线了,共 51 节,从 7 个核心维度来 系统性 的讲解 Docker 容器技术的核心特性及原理,实践与源码相结合;部分内容会深入到 Linux 内核源码,以此来建立起从内核到 Docker 容器技术的知识体系。

我希望借由这个课程,将 Docker 容器技术的本质和思想与我在开发和运维 Docker 过程中对其原理和实践经验的总结讲清楚,并将结合着实践和核心特性的原理,加深对 Docker 容器技术的理解

因此,我把课程划分成了三大模块:

  • Docker 入门: 这个模块分成了三篇内容,通过第一篇,带你了解 Docker 容器技术生态的发展脉络;第二篇,是为刚入门 Docker 的读者准备的,也是为后续章节进行铺垫;第三篇是很多读者或公司都常会困惑的问题,Docker 与 Linux 内核兼容性如何,要上生产环境该选择哪个版本?我会在这一篇中与你分享,让你不再困惑。

  • Docker 核心特性:这个大模块围绕 Docker 的核心知识点,拆分成了 7 大部分,分别是容器、镜像、CI/CD、架构、存储、安全和网络。这些是该课程的核心内容,在这部分内容中,我将基本按照从实践到原理的方式进行组织,让你从根儿上知道如何用,以及为什么这么用。

    • 在容器篇,我会先给你介绍容器生命周期管理相关的内容,那你对容器的使用有个基本认识;之后会对容器资源进行管理;并对容器的核心进行深入剖析;最后动手来自己写容器。

    • 在镜像篇,我会给你介绍镜像完整的生命周期管理;镜像是如何构建与分发的;如何使用 Dockerfile 进行镜像构建;并介绍 Docker 的下一代构建系统是如何提速近 10 倍的;接下来结合我的实际镜像为你介绍 Dockerfile 的优化和最佳实践;最后分别深入源码为你介绍镜像构建、分发的原理,以及认证流程和原理。

    • 在 CI/CD 篇,我会为你介绍如何将 Docker 与 CI/CD 结合,并为你介绍适用于生产环境使用的 CI/CD pipeline,希望能为你建设 CI/CD 提供一些启发。

    • 架构篇中我会结合源码给你介绍 Docker 的核心架构,以及其是如何协作的;Docker 提供了一种可扩展的 Plugin 机制,在特定场景下使用 Plugin 扩展 Docker 也是一种不错的选择;接下来会结合实际经验为你介绍容器监控和日志方面的具体实践方案,希望能为你在实际使用中提供一个参考;最后会 与你分享我所总结的 Docker 相关问题的定位及调试手段 正确的方法能让你排查问题的效率翻倍。

    • 存储篇主要介绍 Docker 中 volume 的使用;以及如何进行数据备份和恢复;最后会深入内部为你介绍现在 Docker 最推荐的 Overlay2 存储驱动的工作原理。

    • 安全篇会涉及镜像和容器运行时的安全;以及会涉及一些的 Linux 内核安全相关的知识,为你详细介绍如何利用 Linux 内核的安全模块为 Docker 保驾护航。

    • 网络篇除了介绍基础网络知识外,还会为你介绍如何定制 bridge 网络;iptables 始终是一个很核心的知识点,我会为你将 Docker 与 iptables 梳理清楚,以及如何自定义的进行网络管理;最后会为你详细介绍 docker-proxy ,Docker 内部 DNS 以及 Docker 的核心网络知识,让网络不再成为一个拦路虎。

  • 生态扩展:不得不说“开源”是 Docker 成长迅速的关键,在这个模块中,我将为你介绍 Docker 与 Kubernetes 间的联系,以及容器生态中的其他组件;与你分享如何参与到 Docker 容器生态内,当然这里也会涉及到 Docker 现在的代码组织相关的内容;最后将与你探讨 Docker 生态未来的走向。

专栏新上线,限时优惠!可直接访问链接 gitbook.cn/gitchat/col… 参与学习,或扫描下方图片二维码参与:

PS:可以生成自己的分享海报,得 24.75

关注下面的标签,发现更多相似文章
评论