摘要:Docker是云原生的直接推动者,也是云计算的重要组成,本篇我就重点来谈谈Docker架构@mikechen
Docker是云原生的直接推动者,也是云计算的重要组成,本篇我就重点来谈谈Docker架构@mikechen
本文作者:陈睿|mikechen
文章来源:mikechen.cc
Docker
Docker作为一款流行的容器化技术,已成为现代软件开发、和部署流程中不可或缺的一部分。
Docker,其高效、轻量、可移植。。。等特性,彻底改变了应用程序的构建、分发和运行方式。
Docker架构
Docker架构有三个核心组件,如下图所示:
1.Docker镜像
Docker镜像,是Docker的核心构建块,它是一个只读的模板。
Docker镜像,包含了:运行应用程序所需的一切:操作系统、运行时环境、库、代码、配置文件...等。
镜像是创建容器的基础,容器从镜像加载内容。
如下图所示:
Docker镜像,可以被视为一个快照,它记录了某个特定时刻应用程序的状态。
一个镜像可以基于另一个镜像构建,形成层层叠加的镜像层,这使得镜像构建高效且节省存储空间。
Docker 的镜像、和容器,采用分层结构存储,通过 UnionFS 实现。
并且,Docker 镜像只读,多个镜像层...可以共享。
Docker仓库
Docker仓库,英文为:”Docker Registry“,是一个存储、和分发Docker镜像的服务。
Docker Hub是一个公共的镜像仓库,类似于GitHub用于代码,它存储了大量的预构建镜像,方便用户下载和使用。
用户也可以将自己构建的镜像推送到Docker Hub,与他人共享。
用户通过docker run命令创建容器,Docker Engine会从镜像仓库中找到相应的镜像,并基于该镜像创建一个新的容器。
这个过程包含创建容器文件系统、分配资源等操作。
Docker容器
容器 (Container), 容器是镜像的运行实例,它是一个隔离的运行环境。
Docker容器技术本质上:是一种资源隔离和控制的技术,它借鉴了沙盒的理念,将应用程序、及其依赖封装在一个独立的环境中。
Docker容器,可以简单地将它类比为一个集装箱(Container),如下图所示:
Docker容器,用来打包/和隔离应用程序的运行环境,使得它可以在不同的系统上实现一致的运行。
Docker容器,通过操作系统的内核功能(如: Linux 的 cgroups 、和 namespaces)。
命名空间:为容器提供了隔离的视图,包括:进程命名空间 (PID Namespace)、网络命名空间 (Net Namespace)、用户命名空间 (User Namespace)、挂载命名空间 (Mount Namespace) 和 IPC 命名空间 (IPC Namespace)...等等。
每个命名空间都为容器提供了一个独立的资源视图,例如:容器中的进程ID在宿主机的视角下是不同的。
控制组限制了容器的资源使用,包括:CPU、内存、IO...等。
通过cgroups,可以限制容器的资源使用上限,防止容器占用过多系统资源,从而保障系统的稳定性。
确保每个容器只访问自己的资源,而不影响其他容器或主机系统。
并且,拥有自己的文件系统、网络配置和进程空间,但共享宿主机内核。
总之,Docker通过巧妙地利用Linux内核的特性,实现了轻量级、可移植、可扩展的容器化技术。
Docker,改变了软件开发和部署的方式,极大的提高了效率。
本文作者:陈睿|mikechen
文章来源:mikechen.cc
来源:晓加科技观