首页 > 其他分享 >Docker技术架构概述

Docker技术架构概述

时间:2023-06-26 23:32:46浏览次数:47  
标签:容器 container IP 网卡 概述 Linux 架构 Docker

1、Docker技术构成

Docker软件采用客户-服务(CS架构)的技术架构模式,Docker Client和Docker Daemon交互,Docker Daemon负责创建、运行、发布容器,Docker Client和Docker Daemon可以在同一个系统中,或者Docker Client可以通过REST API远程控制Docker Daemon。Docker Compose负责控制一组应用容器。

Docker技术架构概述_Docker

2、Docker核心技术

Docker核心技术有3类:Cgroups、LXC、AUFS。

  1. Cgroups

Cgroups提供了对一组进程及将来子进程的资源限制、控制和统计的能力,这些资源包括CPU、内存、存储、网络等。通过Cgroups,可以方便地限制某个进程的资源占用,并且可以实时监测进程的监控和统计信息。Cgroups的接口通过操作一个虚拟文件系统来实现,一般挂载在(/sys/fs/cgroup)文件夹下。

  1. LXC

LXC是Linux Containers的简称,是一种基于容器的操作系统层级的虚拟化技术。LXC项目位于Sourceforge上面,由一个Linux内核补丁和一些用户空间工具组成,其中内核补丁提供底层新特性,上层工具使用这些新特性,提供一套简化的工具来维护容器。

LXC在资管管理方面依赖与Linux内核密切相关的Cgroups子系统,这个子系统是Linux内核提供的一个基于进程组的资源管理框架,可以为特定的进程组限定可以使用的资源,借助Cgroups子系统,在当前Linux环境下实现一个轻量化的虚拟机。

LXC在隔离控制方面依赖于Linux内核提供的namespace特性,具体来说,就是在clone时加入相应的flag。

  1. AUFS

AUFS是一种Union File System(联合文件系统),又称Another UnionFS,后来被称为Alternative UnionFS,再后来又被称为高大上的Advance UnionFS。所谓UnionFS,就是把不同物理位置的目录合并(mount)到同一个目录中。UnionFS的一个最主要应用是,把一张CD/DVD和一个硬盘目录联合(mount)在一起,然后,就可以对这个只读的CD/DVD上的文件进行修改(当然,修改的文件存储在硬盘上的目录里)。

3、Docker打包原理

在LXC的基础上,Docker额外提供的Feature包括:标准统一的打包部署运行方案,为了最大化重用Image,加快运行速度,减少内存和磁盘footprint,Docker Container运行时所构造的运行环境实际上是由具有依赖关系的多个Layer组成的。

在基础的rootfs image的基础上,叠加了包含如Emacs等各种工具的image,再叠加包含apache及其相关依赖library的image,这些image由AUFS文件系统加载合并到统一路径中,以只读的方式存在,最后再叠加加载一层可写的空白Layer,用于记录对当前运行环境所作的修改。

有了层级化的image做基础,理想情况下,不同的App就可以尽可能地公用底层文件系统和相关依赖工具等,同一个App的不同示例也可以实现公用绝大多数数据,进而以copy on write的形式维护那份已修改过的数据等。

4、Docker网络模式

Docker的网络模式包括下列4类:Bridge container(桥接式网络模式)、Host(open)container(开放式网络模式)、Container(join)container(联合挂载式网络模式,是Host网络模式的延伸)、None(Close)container(封闭式网络模式)。

  1. Bridge container

当Docker进程启动时,会在主机上生成一个默认的虚拟网桥,此主机上启动的Docker容器会连接到虚拟网桥中,默认的IP地址都是由虚拟网桥生成的。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。从一个子网中分配一个IP给容器使用,并设置子网的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以veth-xxx这种形式命名,并将这个网络设备加入到虚拟网桥中。

  1. Host(open)container

如果启动容器时使用Host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等,还是和宿主机隔离的。

  1. Container(join)container

这种模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过网卡设备通信。

  1. None(Close)container

使用None模式时,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息,只有IO网络接口,需要为Docker容器添加网卡、配置IP等。

标签:容器,container,IP,网卡,概述,Linux,架构,Docker
From: https://blog.51cto.com/key3feng/6558832

相关文章

  • 使用 Debian、Docker 和 Nginx 部署 Web 应用
    前言本文将介绍基于Debian的系统上使用Docker和Nginx进行Web应用部署的过程。着重介绍了Debian、Docker和Nginx的安装和配置。第1步:更新和升级Debian系统通过SSH连接到服务器。更新软件包列表:sudoaptupdate升级已安装的软件包:sudoaptupgrade第2步:......
  • 使用纯 ABAP 开发 SAP UI5 之一:概述
    abap2UI5是一个开源项目,提供了一种纯ABAP的方法来开发UI5应用程序,无需使用JavaScript、OData和RAP——类似于过去,只需要几行ABAP代码就可以使用选择屏幕和ALV显示输入和表格。该项目设计具有最小的系统占用,并可以在本地和云环境中运行。使用ABAP开发SAPUI5应用的一些优势:......
  • 网安--密码安全概述
     不安全密码1、默认密码路由器默认密码查询:https://www.toolmao.com/baiduapp/routerpwd/2、弱口令弱口令查询网站:https://nordpass.com/most-common-passwords-list/3、已经泄露的密码查询网站:https://haveibeenpwned.com/......
  • 微服务设计:演化式架构师、如何建模服务
    架构师必须改变那种从一开始就要设计出完美产品的想法,相反我们应该设计出一个合理的框架,在这个框架下可以慢慢演化出正确的系统,并且一旦我们学到了更多知识,应该可以很容易地应用到系统中。我们的架构师应该像城市规划师那样专注在大方向上,只在很有限的情况下参与到非常具体的细节......
  • 结构型模式概述
    结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。......
  • ​​统信UOS服务器操作系统迁移docker目录​​
    原文链接:统信UOS服务器操作系统迁移docker目录hello,大家好啊,今天给大家带来一篇在统信UOS服务器操作系统上迁移docker目录的文章,在工作中我们会发现,当我们没有将/var目录单独分区的时候,运行docker容器后,会将根目录挤压,因此我们可以通过迁移docker目录的方式,释放根路径的磁盘空间,文......
  • Spark架构体系
    Spark架构体系StandAlone模式是spark自带的集群运行模式,不依赖其他的资源调度框架,部署起来简单。StandAlone模式又分为client模式和cluster模式,本质区别是Driver运行在哪里,如果Driver运行在SparkSubmit进程中就是Client模式,如果Driver运行在集群中就是Cluster模式standalonecl......
  • linux 核间通讯rpmsg架构分析【转】
    转自:https://blog.csdn.net/wind0419/article/details/123277545以imx8为例在最底层硬件上,A核和M核通讯是靠硬件来进行的,称为MU,如图  LinuxRPMsg是在virtioframework上实现的一个消息传递机制VirtIO是一个用来实现“虚拟IO”的通用框架,典型虚拟的pci,网卡,磁盘等虚拟设......
  • .NETCore项目在Windows下构建Docker镜像并本地导出分发到CentOS系统下
    在Windows下使用Docker,我们选择DockerDesktop这个软件,非常方便。DockerDesktop介绍及安装DockerDesktop是适用于Mac、Linux或Windows环境的一键安装应用程序,使您能够构建和共享容器化应用程序和微服务。它提供了一个简单的GUI(图形用户界面),允许您直接从机器管理容器、应用程......
  • docker常用命令
    Docker常用命令1.搜索dockersearchmysql2.拉取镜像dockerpullmysql:5.7docker-hub官方:https://hub.docker.com/搜索mysql-tag,复制拉取命令以下载mysql5.7版本为例3.查看镜像和镜像IDdockerimages4.删除镜像dockerrmiimageid5.运行镜像dockerrunimageid--name:容器名称(......