中培伟业IT资讯频道
您现在的位置:首页 > IT资讯 > IT运维 > 破解Docker底层技术

破解Docker底层技术

2021-04-22 15:32:44 | 来源:中培企业IT培训网

Docker自2013年以来一直备受瞩目,一款开源软件能否得到广泛应用一般取决于活跃的社区,成功的USER CASE,长期维护还有大量的用户。Docker核心技术就是利用LXC来实现类似VM的功能,这样我们就可以利用更加节省的硬件资源来提供给更多用户,让他们获得更多的计算资源。LXC与VM不同的是它并不是一套硬件虚拟化的方法,而是无法归属到部分虚拟化,全虚拟化和半虚拟化中的任意一个,Docker也是一个操作系统级虚拟化方法,下面我们就来分析一下Docker底层技术和Docker容器技术。

破解Docker底层技术

我们可以通过Docker要解决什么问题出发,看看Docker是怎样实现用户虚拟化需求的。Docker容器的内核版本与宿主机的内核版本是一致的,而容器的主机名却是独立的,容器主机名缺省使用容器的ID。通过运行ps -ef命令,可以发现容器进程是隔离的,在容器内部是无法看到宿主机的进程,容器拥有自己的PID为1的进程;容器的网络也是隔离的,容器拥有独立的IP。容器的文件系统也是隔离的,容器拥有自己的系统和文件目录,在容器内修改文件并不能影响宿主机上对应目录的文件。
Docker容器技术已经发展了好些年,在很多项目都有应用,线上运行也很稳定。整理了部分Docker的学习笔记以及新版本特性,希望可以帮助到大家。
1、容器&Docker&虚拟机
Container(容器)是一种轻量级虚拟技术,无需模拟硬件即可创建虚拟机。使用Linuxkernel的cgroups,namespace(ipc,network,user,pid,mount)、capability等技术来隔离运行环境和资源限制,在Linux系统中被称为容器。容器技术早就出现了。举例来说,SolarisZones和BSDjails都是Linux操作系统的容器,Linux中使用的容器技术很多,比如Linux-Vserver、OpenVZ和FreVPS。尽管技术已经成熟,但是这些解决方案还没有把它们的容器集成到主流的Linux核心。总体来说,容器并不等于文档。
该项目由一个Linux内核补丁和一些userspace工具组成,它提供了一体化工具来维护容器,用于虚拟环境的环境隔离,资源限制和权限控制。虽然LXC与chroot有点相似,但它比chroot提供了更多的隔离。
Docker最初的目标是建立一个特殊的LXC开源系统,最后逐渐演变成自己的容器运行环境。Docker基于Linuxkernel的CGroups、Namespace、UnionFileSystem等技术包装成一个定制的容器格式,用于提供一整套虚拟运行环境。毫无疑问,近年来,Docker已经成为容器技术的代名词,比如官网介绍的Dockerisworld'sleadingsoftwarecontainplatform。这篇文章将首先介绍Docker的基本概念,然后分析Docker背后使用的技术。
2、虚拟机和容器的比较
2.1DockerEngine
Docker提供了安装和运行应用程序的隔离环境,称为容器。Docker的隔离和安全特性允许您在一台主机上同时运行多个容器,并且它不像虚拟机那样重量级。容器基于宿主机的核心运行。它很轻。无论您运行的是ubuntu、debian还是其他Linux系统,使用的核心都是宿主机的核心。Docker提供工具和平台来管理容器,DockerEngine是提供大部分功能组件的CS架构应用程序,如架构图所示,DockerEngine负责管理镜像、容器、网络和数据卷。
dockerengine
2.2Docker结构。
Dockerocker更详细的架构,采用了CS架构,client通过RESTFULAPI将docker命令发送到dockerdaemon过程,dockerdaemon过程进行镜像编译,容器启动、分发、数据卷管理等,一个client可以与多个dockerdaemon通信。
2.3docker架构
DockerDaemon:Docker背景过程用于管理镜像、容器和数据卷。
DockerClient:用于与DockerDaemon交互。
DockerRegistry:用来存储Docker镜像,类似github,公共Registry包括DockerHub和DockerCloud。
镜像是一种用来创建容器的只读模板。镜像通常是基于一个基本镜像,并在此基础上安装额外的软件。例如,您的nginx镜像可以基于debian,然后安装nginx并添加配置,您可以从DockerHub上拉取现有镜像,或者您可以通过Dockerfile编译一个镜像。
Containers:容器是镜像运行的例子,可以通过Dockerclient和API制作、启动或删除容器。默认情况下,容器与宿主机和其他容器隔离,当然可以控制隔离容器的网络和存储方式。
Services:服务是dockerswarm引入的概念,可用于多个主机之间的伸缩容器数量,支持负载平衡服务路由功能。
以上我们为大家分享了Docker底层技术还有Docker容器技术的应用方向,希望能够对您有一定的帮助。如果您想了解更多相关信息,请您继续关注中培伟业。