当前位置: 首页 > news >正文

容器的老祖宗LXC和Docker的关系

一、什么是LXC?

LXC(Linux Container的缩写)是一个基于Linux内核的容器虚拟化技术,它提供了一种轻量级、快速、简便的方式来创建和管理系统容器。与传统虚拟化技术不同,LXC并不会模拟硬件,而是利用Linux内核的功能来隔离进程和文件系统。这使得LXC可以更加轻量级和高效,启动和运行容器的速度也比虚拟机快得多。

LXC容器可以被用于各种用途,包括开发、测试、部署和运行应用程序。容器可以随时创建、启动、停止和删除,容器的配置也可以根据需要进行调整。

LXC是一个底层的容器技术,它提供了命名空间、cgroups、文件系统隔离等内核级别的隔离特性,而不像Docker那样提供更上层的高级容器管理功能。

LXC的出现比较早,早于Docker,但是初期一直不温不火,直到Docker的出现加速了它的发展。

二、LXC安装和使用

LXC可以独立使用被用来实现容器创建、停止容器等基础功能。基于以下步骤可以简单使用LXC:

2.1、安装LXC

首先,需要在Linux系统上安装LXC软件包。在大多数Linux发行版中,可以使用系统自带的包管理器进行安装,例如,在Debian/Ubuntu上,可以使用以下命令进行安装:

sudo apt-get install lxc

2.2、创建容器

创建一个新的容器可以通过lxc-create命令完成,该命令可以创建一个基于模板的容器,例如,以下命令将创建一个基于Ubuntu 20.04模板的新容器:

sudo lxc-create -n mycontainer -t ubuntu -- --release 20.04

其中,-n选项指定容器的名称,-t选项指定使用的模板,--release选项指定模板的版本。执行该命令后,LXC将自动下载并安装Ubuntu 20.04模板,并创建一个名为“mycontainer”的新容器。

2.3、启动容器

创建容器后,可以使用lxc-start命令启动它,例如:

sudo lxc-start -n mycontainer

该命令将启动名为“mycontainer”的容器,并在控制台上输出容器的日志信息。如果需要以后台模式启动容器,可以使用-l选项指定日志文件的路径,例如:

sudo lxc-start -n mycontainer -d -l /var/log/lxc/mycontainer.log

2.4、进入容器

启动容器以后可以使用lxc-attach命令进入运行中的容器,例如:

sudo lxc-attach -n mycontainer

该命令将在当前终端中打开一个新的shell,允许在容器中运行命令和操作文件系统。当完成操作并退出容器时,只需键入“exit”即可返回主机系统。

2.5、停止容器

要停止运行中的容器,可以使用lxc-stop命令,例如:

sudo lxc-stop -n mycontainer

该命令将发送一个SIGPWR信号给容器进程,以请求它优雅地关闭并停止。

这些是LXC的基本使用方法,如果感兴趣可以在LXC文档中找到更多高级功能和配置选项。

三、Docker和LXC的关系

在Docker的早期版本中,它使用LXC作为底层容器引擎来实现容器隔离和虚拟化,Docker确实也让LXC发展得更快。

但是随着时间的推移,Docker逐渐摆脱了对LXC的依赖,并自己实现了一个名为libcontainer的容器引擎,以取代LXC。libcontainer是一个纯Go语言编写的库,它实现了Linux内核的命名空间、cgroups等特性,并提供了更多的容器管理功能。从Docker 1.11版本开始,Docker默认使用libcontainer作为容器引擎,而非LXC。

此外,Docker 提供了更加完整的工具链和生态系统,使得容器的创建、管理和部署变得更加简单和可靠。

因此,Docker 可以看作是 LXC 技术的一种封装和扩展,提供了更多的功能和工具,让容器技术更容易被使用和推广。

目前虽然Docker默认使用了libcontainer,但是仍然可以配置Docker底层使用LXC作为容器引擎。

四、配置Docker使用LXC

Docker默认使用的是自己的容器引擎,即Docker引擎,而不是LXC容器引擎。如果您想在Docker中使用LXC容器引擎,可以按照以下步骤进行配置:

4.1、安装LXC和LXD

首先,需要安装LXC和LXD。LXC是Linux容器的用户空间接口,而LXD是一个容器管理器,提供了更高级别的容器管理功能。您可以使用以下命令在Ubuntu系统上安装它们:

sudo apt-get update
sudo apt-get install lxc lxd

4.2、创建一个LXD容器

在LXD中,可以通过创建一个新的容器来运行应用程序。使用以下命令创建一个新的LXD容器:

sudo lxc launch ubuntu:18.04 mycontainer

这将使用Ubuntu 18.04镜像创建一个名为“mycontainer”的新容器。

4.3、配置Docker使用LXC

在Docker配置文件中增加以下配置,以告诉Docker使用LXD容器来运行应用程序。

{"runtimes": {"lxd": {"path": "/usr/bin/runc"}},"default-runtime": "lxd"
}

默认情况下,Docker配置文件位于/etc/docker/daemon.json。请确保在修改配置文件之前备份它。

重启Docker服务以使更改生效。使用以下命令重启Docker服务:

sudo service docker restart

完成后,Docker就能够使用LXD容器引擎来运行应用程序,底层使用LXC。

五、配置Podman使用LXC

Podman是另外一个流行的容器运行时,其底层默认使用的是runC,但是也可以指定使用LXC作为其底层容器引擎来实现容器隔离和虚拟化,需要按照以下步骤进行设置:

5.1、确认系统上已经安装了LXC。

可以使用以下命令安装LXC

$ sudo apt-get update
$ sudo apt-get install lxc

5.2、设置环境变量

可以在终端中使用以下命令设置环境变量“CONTAINER_RUNTIME”为“lxc”

$ export CONTAINER_RUNTIME=lxc

或者将其添加到shell配置文件中,如“/.bashrc”或“/.zshrc”中。

5.3 、运行容器。

现在可以使用Podman来运行容器,它将使用LXC作为底层容器引擎来实现容器隔离和虚拟化。

$ podman run -it --rm debian /bin/bash

该命令将启动一个Debian容器,并进入容器的shell中。

需要注意的是,使用LXC作为底层容器引擎可能需要管理员权限(root用户)。因此,建议使用sudo或者root用户运行以上命令。另外,使用LXC作为容器引擎可能需要更高的系统资源,因此建议在使用之前进行测试和评估。

相关文章:

容器的老祖宗LXC和Docker的关系

一、什么是LXC? LXC(Linux Container的缩写)是一个基于Linux内核的容器虚拟化技术,它提供了一种轻量级、快速、简便的方式来创建和管理系统容器。与传统虚拟化技术不同,LXC并不会模拟硬件,而是利用Linux内…...

Webpack迁移Rspack速攻实战教程(前瞻版)

前言 rspack 即将开源,但社区中不乏有已经落地的 case ,比如 rspack-migration-showcase 、 modern.js 等。 基于此,本文将介绍如何迁移一个近似于 CRA( create-react-app ) 的项目到 rspack 。 在阅读本文前&#…...

一行代码“黑”掉任意网站

文章目录只需一行代码,轻轻一点就可以把任意网站变成暗黑模式。 首先我们先做一个实验,在任意网站中,打开浏览器开发者工具(F12),在 C1onsole 控制台输入如下代码并回车: document.documentElement.style.filterinve…...

51单片机入门 -驱动 8x8 LED 点阵屏

硬件型号、软件版本、以及烧录流程 操作系统:Windows 10 x84-64单片机:STC89C52RC编译器:SDCC烧录软件:stcgal 1.6开发板:普中51单片机开发板A2套件(2022) 在 VS Code 中新建项目到烧录的过程…...

Xinlinx zynq7045国产替代 FMQL45T900全国产化 ARM 核心板+扩展板

TES745D 是一款基于 FMQL45T900 的全国产化 ARM 核心板。该核心板将 FMQL45T900(与XC7Z045-2FFG900I 兼容)的最小系统集成在了一个 87*117mm 的核心板上,可以作为一个核心模块,进行功能性扩展,能够快速的搭建起一个信号…...

硬刚ChatGPT!文心一言能否为百度止颓?中国版ChatGPT“狂飙”的机会在哪儿?

文章目录目录产品背景发展历程科技简介主要功能合作伙伴结语文心一言 (英文名:ERNIE Bot) *是百度基于文心大模型技术推出的生成式对话产品,被外界誉为“中国版ChatGPT”,将于2023年3月份面向公众开放。 [40] 百度在人…...

Python 异步: 在非阻塞子进程中运行命令(19)

动动发财的小手,点个赞吧! 我们可以从 asyncio 执行命令。该命令将在我们可以使用非阻塞 I/O 写入和读取的子进程中运行。 1. 什么是 asyncio.subprocess.Process asyncio.subprocess.Process 类提供了由 asyncio 运行的子进程的表示。它在 asyncio 程序…...

蓝桥杯嵌入式第五课--输入捕获

前言输入捕获的考题十分明确,就是测量输入脉冲波形的占空比和频率,对我们的板子而言,就是检测板载的两个信号发生器产生的信号:具体来说就是使用PA15和PB4来做输入捕获。输入捕获原理简介输入捕获能够对输入信号的上升沿和下降沿进…...

Spring事务和事务传播机制

目录 Spring中事务的实现 1、通过代码的方式手动实现事务 2、通过注解的方式实现声明式事务 2.1、Transactional作用范围 2.2、Transactional参数说明 2.3、注意事项 2.4、Transactional工作原理 事务隔离级别 1、事务特性 2、Spring中设置事务隔离级别 2.1、MySQL事…...

基于OpenCV+CUDA实时视频抠绿、背景合成以及抠绿算法小结

一、关于抠绿 百度百科上描述抠绿“抠绿是指在摄影或摄像时,以绿色为背景进行拍摄,在后期制作时使用特技机的“色键”将绿色背景抠去,改换其他更理想的背景的技术。”绿幕的使用已经非常普遍,大到好莱坞大片,小到自媒体的节目,一些商业娱乐场景,几乎都用使用。但是很多非…...

MySQL 中的 UNION 语句

文章目录一、数据准备一、UNION 和 UNION ALL二、UNION 的执行顺序(UNION 和其他语句一同出现)三、MySQL 使用 UNION(ALL) ORDER 导致排序失效四、UNION 报错语法一、数据准备 -- 创建表 CREATE TABLE test_user (ID int(11) NO…...

高完整性系统工程(三): Logic Intro Formal Specification

目录 1. Propositions 命题 2.1 Propositional Connectives 命题连接词 2.2 Variables 变量 2.3 Sets 2.3.1 Set Operations 2.4 Predicates 2.5 Quantification 量化 2.6 Relations 2.6.1 What Is A Relation? 2.6.2 Relations as Sets 2.6.3 Binary Relations as…...

【linux】多线程概念详述

文章目录一、线程基本概念1.1 进程地址空间与页表1.2 页表结构1.3 线程的理解1.3.1 如何描述线程1.4 再谈进程1.5 代码理解1.5.1 原生库提供线程pthread_create1.6 资源共享问题1.7 资源私有问题二、总结2.1 什么是线程2.2 并行与并发2.3 线程的优点2.4 线程的缺点2.5 线程异常…...

【Java】P8 面向对象(3)方法 基本知识

面向对象 方法方法方法的声明权限修饰符返回值类型方法名形参列表方法体简单案例方法 方法 是对类或对象行为特征的抽象,用来完成某个功能的操作。方法的目的 是为了实现代码复用,减少冗余,简化代码;方法不能独立存在&#xff0c…...

js中null和undefined的区别

js中null和undefined的区别?这也是一个常见的js面试题 相同点 1,都是基本类型。 2,做判断值都是false。 !!null false // true !!undefined false // true不同点 1,诞生时间null在前,undefined在后。因为js作者Brendan-Eic…...

【Linux】linux中的c++怎么调试?gdb的介绍和使用。

背景1.1.前提知识程序的发布方式有两种,debug模式和release模式Linux gcc/g出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项windows上的调试方法有区别吗?1.调试思路是一样的2…...

提升Python代码性能的六个技巧

文章目录前言为什么要写本文?1、代码性能检测1.1、使用 timeit 库1.2、使用 memory_profiler 库1.3、使用 line_profiler 库2、使用内置函数和库3、使用内插字符串 f-string4、使用列表推导式5、使用 lru_cache 装饰器缓存数据6、针对循环结构的优化7、选择合适算法…...

VI的常用命令

VI的常用命令 文章目录VI的常用命令vi/vim是什么?VI普通模式命令VI编辑模式命令VI指令模式vi/vim是什么? VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器 VIM编辑器是从VI发展出来的一个性能更强大的文本编辑器。可以主动的将字体颜色辨别语法…...

【数据结构】万字深入浅出讲解单链表(附原码 | 超详解)

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:C语言实现数据结构 💬总结:希望你看完…...

无线WiFi安全渗透与攻防(五)之aircrack-ng破解WEP加密

系列文章 无线WiFi安全渗透与攻防(一)之无线安全环境搭建 无线WiFi安全渗透与攻防(二)之打造专属字典 无线WiFi安全渗透与攻防(三)之Windows扫描wifi和破解WiFi密码 无线WiFi安全渗透与攻防(四)之kismet的使用 aircrack-ng破解WEP加密 1.WEP介绍 其实我们平常在使用wifi的时…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...