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

这篇具有很好参考价值的文章主要介绍了容器技术对比(Docker/LXC/LXD/Multipass)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker LXC LXD Multipass
基本介绍 为了打破“程序即应用”的观念,通过镜像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. 安装过程复杂

文章来源地址https://www.toymoban.com/news/detail-454673.html

到了这里,关于容器技术对比(Docker/LXC/LXD/Multipass)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安卓手机部署ubuntu的lxc容器,并安装好dockerd

    刷机获取root是必须的,而且必需要有一个支持docker的内核。 检测当前设备支持docker的方法: 安装Termux并初始化。 这里给个安装包下载链接:[termux app链接]。 下载Moby的脚本用于检查缺少的内核功能 查看CONFIG都是绿字就行。 编译支持docker的安卓内核的方法,就不在此写了,

    2024年02月03日
    浏览(40)
  • 【Docker】Docker容器与虚拟机的对比、三要素、架构和镜像加速器的详细讲解

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月15日
    浏览(61)
  • 【Docker】LXC所实现的隔离性、Linux Namespace等讲解

    前言 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介: 热爱跑步的恒川 ,致力于

    2024年02月07日
    浏览(33)
  • Docker技术--Docker容器管理

    1.Docker 容器相关的指令(单个容器操)        我们之前在Docker中部署了一个实际应用的案例wordpress,其中使用到了一些相关于容器的指令,那么下面我们一起来总结使用。 Docker指令的语法规则如下所示: Docker + 命令 [+参数选项] -1 类:关闭、开启、重启、开启自启 systemct

    2024年02月11日
    浏览(43)
  • Docker 基础知识解析:容器与传统虚拟化对比:资源利用、启动时间、隔离性和部署效率

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(68)
  • LXC(Linux Containers)介绍、安装、使用及与Docker的区别与联系

    LXC是Linux容器(Linux Containers)的缩写,是一种轻量级的虚拟化技术,允许在同一主机上运行多个相互隔离的Linux容器,每个容器都有自己的完整的文件系统、网络、进程和资源隔离环境。LXC使用Linux内核提供的cgroups和命名空间(Namespaces)功能来实现容器隔离。 与传统的虚拟机

    2024年02月09日
    浏览(45)
  • 容器和云原生(二):Docker容器化技术

      目录 Docker容器的使用 Docker容器关键技术 Namespace  Cgroups UnionFS         首先直观地了解docker如何安装使用,并快速启动mysql服务的,启动时候绑定主机上的3306端口,查找mysql容器的ip,使用mysql -h containerIP 或者127.0.0.1就可以直接访问mysql服务,暂不考虑mysql的存储卷。    

    2024年02月12日
    浏览(46)
  • 容器技术—docker stack

    在之前的几篇文章中,我们介绍了Docker Compose,它是用来进行一个完整的应用程序相互依赖的多个容器的编排的,但是缺点是不能在分布式多机器上使用;我们也介绍了Docker swarm,它构建了docker集群,并且可以通过docker service在不同集群节点上运行容器服务,但是缺点是不能同

    2024年02月05日
    浏览(42)
  • Docker容器技术详解(四)

    本文章将介绍docker-compose技术,如果想要了解docker前置内容,可以查看以下两篇文章. Docker容器技术详解(一) Docker容器技术详解(二) Docker容器技术详解(三) 注意,要想使用docker-compose命令的话需要在有docker-compose.yml文件的目录才能使用docker-compose命令 启动docker-compose.yml文件 查看

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包