关注mikechen,十余年BAT构架经验倾囊相授!
你们好,我是mikechen睿哥。
Docker是云原生的基石,也是云估算的核心组成,下边我重点解读Docker@mikechen
Docker容器
在容器技术成为云原生基石的明天docker容器与容器云,Docker几乎是所有开发者和运维工程师必须把握的工具。
Docker是一个开源的容器化平台,用于建立、部署和运行应用程序的容器。
它通过轻量级虚拟化技术,让开发者可以在任何支持Docker的环境中以一致的形式运行应用。
Docker工作原理
Docker的运行原理,重点围绕镜像(Images)、容器(Containers)和库房(Registries/Repositories)这三个核心。
如右图所示:
Docker镜像
Docker镜像是一个轻量级、独立的可执行软件包,包含了运行一个软件所需的所有内容:代码、运行时环境、库、环境变量和配置文件。
你可以把它想像成应用程序及其所有依赖项的一个“静态快照”或者“安装包”。
DockerImage├──Layer1:FROM ubuntu├──Layer2:RUN apt install nginx├──Layer3:COPY index.html /var/www└──...最终构成一个多层镜像
Docker容器
容器(Container)是镜像的一个运行实例,相当于“类”的实例对象。
容器是镜像的可写运行环境,启动时在镜像之上创建一个可写层。
容器内运行的进程拥有独立的命名空间和资源限制docker容器与容器云,实现进程隔离和资源控制。
容器是动态的,可以启动、停止、删除,其生命周期与其可写层绑定,容器删掉时该层也会消失。
Docker库房
库房(Registry),是储存和管理镜像的地方,类似代码库房。
用户可以将镜像推送(push)到库房永久免费linux服务器,也可以从库房拉取(pull)镜像。
库房支持公共和私有两种方式,DockerHub是最大的公共库房。
库房促使镜像可以在不同环境间共享和分发,实现应用的快速布署和版本管理
Docker底层技术
Docker的工作原理主要基于Linux内核的三大核心技术:命名空间(Namespaces)、控制组(cgroups)和联合文件系统(UnionFS)。
1.Namespace:实现资源隔离
Namespace是Linux提供的资源隔离机制,Docker借助以下几种Namespace来实现容器的“虚拟环境”效果:
通过这种机制,容器像是一个独立的系统,但毕竟只是主机上的一组被隔离的进程。
2.Cgroups:实现资源限制
Cgroups(控制组)用于限制和统计容器对资源的使用:
示例:限制容器最多使用512MB显存:
docker run -m 512m nginx
3.UnionFS:实现镜像分层机制
Union文件系统(如OverlayFS)支持将多个目录挂载到同一目录,Docker镜像就建立于此之上。
其实,Docker通过Linux内核的命名空间实现了资源隔离,通过Cgroups实现了资源限制,通过联合文件系统实现了高效的镜像管理。
以上
本篇已收于mikechen原创超30万字《阿里构架师进阶专题合辑》里面。