容器技术对比(Docker/LXC/LXD/Multipass)

2023-05-16

DockerLXCLXDMultipass
基本介绍为了打破“程序即应用”的观念,通过镜像imges将作业系统核心除外,运作应用程序所需的系统环境,由下而上打包,达到应用程序跨平台间的无缝接轨运作,属于应用容器全称Linux Containers,是一种基于容器的操作系统层级的虚拟化技术,属于系统容器是下一代系统容器和虚拟机管理器,本身基于镜像,提供了许多Linux发行版镜像。LXC提供一套完整的底层工具库集来创建和管理容器,但是使用起来不方便,加上技术升级,需要对老版容器向后兼容,使得LXC无法默认开启某些安全功能,需要手动开启。LXD就是用来解决这些问题,作为LXC的长期运行守护进程在本地通过multipass命令创建Ubuntu虚拟机,并可以通过cloud-init来进行初始化
实现原理基于Namespace进行系统的资源隔离,基于Cgroups进行容器资源的限制,基于Union File System实现镜像的分层管理,减少资源消耗。Docker前期使用LXC技术来实现,后面使用golang编写自己的libcontainer库实现在资源管理方面依赖于Cgroups子系统,在隔离控制方面依赖于Namespace特性,通过Chroots技术实现根目录的变换。对比Docker,缺少了镜像的分层管理实现原理和LXC相同,本身不属于一种新的容器技术,而是作为LXC的长期运行守护进程,底层实现依靠LXC底层依靠LXD和qemu来实现
特点1. 镜像文件分层共享,开启容器只在最上一层提供初始层(用于设置容器的环境)和读写层(对容器内文件的修改都将保存在这一层)
2. 维持容器的运行必须要有一个前台进程,如果该前台进程被销毁,则整个容器将关闭
3. 支持多种存储后端
1. 维持容器的运行不需要有前台进程,开启过程类似于虚拟机,直接通过模板镜像创建一个容器
2. 非特权容器(细粒度的权限控制):通过uid和gid的映射来为容器分配uid和gid的范围,如果容器内部出现严重错误,攻击者逃离容器,在服务器上最多只能拥有和普通用户一样多的权限(第一个实现该功能的容器技术)
1. 作为LXC的长期守护进程,LXC拥有的特点,LXD都拥有。
2. 安全性比LXC更高,包含身份认证等
3. 不仅能够实现容器,还可以实现虚拟机(qemu),都可以通过文件来进行配置
4. 支持多种存储后端
5. 支持通过配置文件的形式来创建容器(支持动态应用)
1. 提出主实例概念,默认名称为primary的虚拟机就是主实例(只能有一个),当命令不指定虚拟机时,默认为主实例
2. 提出alias概念,可以在服务器上创建命令连接到虚拟机中的命令
应用由于Docker存在以上特点,所以一般关注于临时的、无状态的、最小化容器上面,对于容器的修改一般不会升级或重新配置,而是整个被替换掉。容器内只能有一个前台进程,所以一个容器代表着一个应用程序LXC不像Docker容器一样需要一个前台进程,所以着重于系统容器(基础设施容器),一个LXC容器上运行一个完整的Linux系统,长期运行,所以可以作为一台轻量级的虚拟机应用场景于LXC相同目前找不到应用场景
优势1. 镜像分层共享,节省资源
2. 镜像生态丰富
3. 遵循OCI标准,所有的容器运行时能够运行Docker制作出来的镜像,其他镜像制作软件制作的镜像都能在Docker上运行
1. 不需要前台程序,一个容器内可以运行多个应用程序,支持长期运行
2. 在安全性上优于Docker
3. 提供丰富的功能(发送信号,监控状态)
1. 镜像生态丰富
2. 支持本地和远程访问
3. 命令直观清晰
4. 提供日志、操作和声明周期事件
5. 提供恢复和备份(快照)
6. 使用CRIU实现实时迁移
7. 高级资源控制(CPU、内存、网络、块设备、磁盘使用和内核资源)
8. 支持设备直通
1. 启动虚拟机方便,只需一个命令
2. 无需特权指令
劣势1. 运行Docker命令必须要有特级权限
2. 无法动态对容器的资源进行限制
3. 本身无法实现动态迁移,需要依靠CRIU,但是热迁移对于Docker来说并不重要,只需要关闭容器,在其他服务器重启一个就行
1. 可以创建非特权容器意味着一些常见的操作是不允许的(大多数文件系统的挂载、创建设备节点、对映射集以外的uid/gid的任何操作
2. 无法实现资源动态限制
3. 无法实现容器动态迁移
虚拟机功能略显鸡肋(qemu性能低下)1. 只能创建Ubuntu虚拟机或者基于Ubuntu的应用程序
2. 镜像稀少
3. 命令反应迟钝
4. 性能低下
备注通过apt安装只能使用低版本1. 安装过程复杂,使用apt安装只能使用低版本,使用snap可以安装高版本,但是国内无代理
2. 开启一个ubuntu 20.04虚拟机的时间大概在1分18秒,速度比较快,但是开启完后有一段时间内没有ipv4
1. multipass network命令通过LXD来获取网络接口
2. 开启一个ubuntu 20.04容器的时间大概在1分50秒
3. 可以使用libvirt作为运行驱动,以提供更多的虚拟机控制
4. 安装过程复杂
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

容器技术对比(Docker/LXC/LXD/Multipass) 的相关文章

随机推荐

  • 岭回归(R语言)

    代码实现如下 xff1a data3 3 lt read csv 34 C Users Administrator Desktop data3 3 csv 34 head 61 TRUE datas lt data frame scale
  • Logistic回归模型(R语言)

    1 分组数据的Logistic回归模型 下面我们以一道例题来说明 xff0c R软件中实现分组数据的logistics回归模型 xff1a 代码实现如下 xff1a data10 4 lt read csv 34 C Users Admin
  • Eigen库使用指南(转载)

    Eigen库使用指南 转载 目录 Eigen库使用指南 转载 1 模块和头文件 2 Matrix类 3 矩阵与向量的运算 4 Array类 5 块操作 6 矩阵初始化 7 归约 xff0c 迭代器 xff0c 广播 8 Map类 9 混淆问
  • MAVEN SpringMVC IDEA里 修改js、html需要重启才会生效

    目的 xff1a 修改js html时可以立即生效 1 将tomcat服务配置中的before launch中的数据清空 2 修改如图 3 勾选File Settings Compiler 4 快捷键 Ctrl 43 Alt 43 Shif
  • linux命令之数据库操作

    五 数据库操作 1 mysql 重新启动 sudo etc init d mysql restart ps 看 etc mysql my conf 下的log的配置信息 一般在 var log mysql error log 2 mysql
  • Word删除单独页页眉与分节处理

    通常在word中处理页眉页脚时 xff0c 我们会发现一删全删 xff0c 一改全变的情况 xff0c 而网上方案往往难以解决且晦涩难懂 xff0c 因此 xff0c 将方法分享一下 xff0c 希望大家一看便懂 xff08 本文以遇到的三
  • Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey 论文阅读笔记

    本文是论文的阅读笔记 Paper A Threat of Adversarial Attacks on Deep Learning in Computer Vision A Survey Author Naveed Akhtar cor n
  • ubuntu20.04安装skopeo

    文章目录 1 先安装好go环境2 配置环境3 安装skopeo3 1 安装依赖3 2 获取项目 xff0c 并进行编译3 3 构建文档3 4 安装3 5 验证 4 注意 1 先安装好go环境 如何安装go环境 xff0c 最好选择系统范围内
  • go get得到的东西不在$GOPATH中

    最近在ubuntu20 04上安装oci image tool xff0c 按照官方文档执行 xff0c 结果第一步就发现go get得到的东西找不到 xff0c 后来查阅了这篇博客 xff0c 发现了原因 xff0c 是因为开了gopro
  • 容器镜像加密-containerd imgcrypt实践

    最近在研究容器镜像加密 xff0c 发现国内对容器镜像这部分的博客好像不太多 xff0c 在看了一些人的博客后 xff0c 跟着他们的步骤进行了containerd imgcrypt的实践 xff0c 期间出现了一些错误 xff0c 决定记
  • ubuntu20.04安装howdy

    howdy是一款用于Linux系统的人脸识别身份验证系统 xff0c 可以看作是Windows中的Windows Hello的替代品 xff0c howdy在安装的过程中会去外网下载一些安装包 xff0c 所以前提条件是有访问外网的手段 h
  • zipimport.ZipImportError: can‘t decompress data; zlib not available

    在Ubuntu16 04上通过pyenv安装python3 6 8时出现以下错误 xff0c 记录一下 ubuntu 64 ubuntu pyenv span class token function install span 3 6 8
  • Ubuntu16.04安装zabbix4.0

    以下教程为Ubuntu16 04安装zabbix4 0 xff0c 需提前自己安装好Mysql数据库 其中第1 7点为主节点安装配置Zabbix server Zabbix agent Web前端 xff0c 第8点不用进行 xff1b 第
  • Ubuntu16.04搭建gitea1.14.1

    以下教程为在Ubuntu16 04上搭建gitea1 14 1 xff0c 同时附上官方教程链接 文章目录 1 数据库准备1 1 登录数据库1 2 创建gitea用户1 3 创建gitea数据库1 4 给gitea用户赋予数据库的权限1 5
  • ubuntu16.04搭建spice-html5用于配合KVM

    文章目录 0 配置需求1 启动spice客户端2 配置websockify3 配置spice html54 浏览器访问 0 配置需求 Firefox或Chrome浏览器 xff0c IE浏览器也可以 xff0c 但是效果不是太好 WebSo
  • python 数据挖掘中的数值计算

    一 环境安装 环境配置 xff1a OS xff1a Red Hat 4 4 7 11 查看命令 xff1a uname a xff1a 电脑以及操作系统的相关信息 cat proc version xff1a 正在运行的内核版本 cat
  • 银河麒麟下libguestfs-tools中virt工具无法使用情况

    银河麒麟下libguestfs tools中virt工具无法使用情况 问题描述 xff1a 在银河麒麟高级服务器版本V10下安装libguestfs tools工具包后 xff0c 使用virt xx等一系列命令都会出现以下错误 xff1a
  • ubuntu16.04搭建containerd

    本博客具体介绍在ubuntu16 04下安装containerd的过程 xff0c 有关ctr的命令都要有root权限才能运行 搭建过程 下载containerd安装包解压containerd安装包到根目录下启动containerd并设置开
  • KVM安装Windows11系列(一)

    本教程系列为KVM安装Windows11 xff0c 会分成两部分 xff0c 第一部分会跳过Windows11的硬件要求TPM和安全启动 xff0c 第二部分会安装TPM模拟器进行模拟 文章目录 软件环境下载Windows11镜像和驱动创
  • 容器技术对比(Docker/LXC/LXD/Multipass)

    DockerLXCLXDMultipass基本介绍为了打破 程序即应用 的观念 xff0c 通过镜像imges将作业系统核心除外 xff0c 运作应用程序所需的系统环境 xff0c 由下而上打包 xff0c 达到应用程序跨平台间的无缝接轨运