当 Kubernetes 使用 Docker 作为容器运行时,用来启动应用;当 Docker 容器规模变大时,自然是需要有容器编排工具进行管理的。
In fact, Kubernetes is better with Docker. And Docker is better with Kubernetes.
无论在使用 Docker 或是 Kubernetes 亦或者是使用基于这些技术的其他衍生技术时,都有可能会遇到一些意料之外的情况,当问题发生时,我们总是希望可以快速定位问题,并且从根本上解决问题。
一般情况下,上层的问题比较容易解决,但如果问题发生在运行时 Docker 或容器上时,如果没有系统性的知识,很难从根本上解决问题。
容器是什么
说白了,容器其实是在某台机器上的“一组”进程,当然这组进程可能只有一个;它们有相同的特性,当然所受的限制也是相同的;既然叫做容器,很自然的我们认为它们与外界可以进行隔离 / 应该有一个分界线。
Docker 的优势
Docker 一开始能吸引众多用户,其中一个很重要的因素就在于它上手使用很简单。在安装完 Docker 之后,一行命令语句 docker run hello-world 便已经运行了一个容器,一切看着都及其简单。
2008 年到 2013 年这之间大约 5 年左右的时间,以 LXC 为首的容器技术并没有得到类似 Docker 出现后那么广泛的普及,我在之前的线下演讲中也提到过这个点,最主要的原因在于 LXC 太偏向技术了,使用 LXC 有一定的门槛,导致了好多人的退却。
使用 Docker 面临的问题
在实际的生产使用中,我们所运行的容器包含着业务代码,生产环境的网络、系统等因素也都很复杂。一旦出现问题,如何才能最高效地定位并解决问题,并且保证之后不再有类似的问题发生?
要做到这些,就需要对 Docker 技术有足够的了解。在大型公司中,都有专职负责基础支撑技术的开发或运维人员,而在中小型企业可能就很少有这类团队或者压根没有,需要开发人员自行解决。
-
构建的镜像体积为什么这么大 -
Pull 镜像为什么这么慢 -
新构建的镜像为什么不生效 -
构建镜像为什么这么久
现在很多岗位的招聘需求上都有写需要了解或者掌握 Docker,或者将掌握 Docker 等容器技术作为加分项目,并且这个要求不局限于运维或者后端开发等岗位。
扫码查看《Docker 核心知识必知必会》
▼
专栏介绍
第三篇,是很多读者或公司都常会困惑的问题,Docker 与 Linux 内核兼容性如何,要上生产环境该选择哪个版本?我会在这一篇中与你分享,让你不再困惑。
-
在容器篇,我会先给你介绍容器生命周期管理相关的内容,那你对容器的使用有个基本认识;之后会对容器资源进行管理;并对容器的核心进行深入剖析;最后动手来自己写容器。 -
在镜像篇,将介绍镜像完整的生命周期管理;镜像是如何构建与分发的;如何使用 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 与 Kubernetes 间的联系,以及容器生态中的其他组件;与读者分享如何参与到 Docker 容器生态内,当然这里也会涉及到 Docker 现在的代码组织相关的内容;最后将与读者探讨 Docker 生态未来的走向。
对应的知识图谱如下:
张晋涛:网易有道资深运维开发
内容亮点
-
6 个维度系统性解读 Docker 核心功能
-
实践与源码相结合
-
深入 Linux 内核,剖析容器所需关键技术
-
生产环境 Docker 的使用和填坑经验总结
适宜人群
-
容器运维或开发工程师
-
准备使用或正在使用 Docker 的前后端工程师
-
准备面试容器相关技术岗位的应试者或面试官
-
调研 Kubernetes 等云原生技术的工程师
文章评论