云原生容器技术完全指南:图解与文字解析

发表时间: 2024-04-29 13:46

Docker是云原生非常核心的组件,也是大厂经常考察的内容,下面我就全面来详解Docker原理@mikechen

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

容器技术

容器技术是一种轻量级虚拟化技术,它允许将应用程序、及其所有依赖项打包到一个独立的容器中。

这个就类似物流中的集装箱,集装箱也是一个独立、封闭的运输单位,可以容纳各种货物。

如下图所示:

这里的集装箱容纳是货物,而容器容纳的是软件,本质其实是一样的,都是容器。

两者,都提供了一种标准化、独立、可移植、高效利用资源的解决方案,分别用于软件开发、和物流运输领域。

Docker容器

Docker其实是容器的一种实现,只不过目前最流行,所以很多就把:Docker=容器了。

Docker容器技术的三大核心: Docker 镜像、Docker 容器和 Docker 仓库。

三者之间的关系,如下图所示:

1. Docker 镜像(Docker Image)

Docker 镜像是 Docker 技术的核心之一,通过镜像,开发人员可以方便地构建、部署和分享应用程序。

Docker 镜像,是一个只读的模板,包含了:应用程序运行所需的文件系统、配置文件、和运行时依赖项。

镜像由多个文件系统层组成,每个层都包含了文件系统的一部分,上层可以覆盖下层的内容。

这种层次结构,可以实现镜像的复用和共享,提高了镜像的可维护性、和可重复性。

2. Docker 容器(Docker Container)

Docker 容器是 Docker 镜像的运行实例,是一个独立、轻量级的运行环境。

并且,每个容器都运行在独立的进程中,互相隔离,不会相互影响,避免了应用程序之间的冲突。

除此之外,Docker 容器中还包含了:应用程序的所有依赖项,可以确保应用程序在不同环境中的一致性。

3. Docker 仓库(Docker Registry)

Docker 仓库,是用于存储、和分享 Docker 镜像的中央仓库。

最常用的 Docker 仓库,是 Docker Hub,提供了大量的公共镜像供用户使用。

如下图所示:

Docker Hub 上有大量的公共镜像,涵盖了各种常见的应用程序、服务和操作系统,如: Nginx、MySQL、MongoDB、Ubuntu... 等。

用户可以通过 Docker Hub ,搜索并拉取这些公共镜像,无需自己构建和维护。

容器与虚拟机的区别

从上图,可以显著的看出,两者之间最大的区别:Docker是不携带操作系统,虚拟机是携带操作系统。

虚拟机中,每个虚拟机都运行着一个完整的操作系统,包括:独立的内核和系统资源。

而Docker 容器,只包含了应用程序、及其运行时依赖项,比如:代码、库文件、系统工具等。

因此,这种差异导致了, Docker 容器相对于虚拟机来说更加轻量级、更加高效,并且启动速度更快。

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。