LXC (Linux 虚拟环境)简单介绍

简介: LXC是Linux containers的简称,操作系统级别的虚拟化技术。它可以在操作系统层次上为进程提供的虚拟的执行环境。一个虚拟的执行环境被称为一个容器(container)。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。

LXC是Linux containers的简称,操作系统级别的虚拟化技术。它可以在操作系统层次上为进程提供的虚拟的执行环境。一个虚拟的执行环境被称为一个容器(container)。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。

image.png


基本安装

Debian/Ubuntu系统下,使用apt安装:

sudo apt-get install lxc bridge-utils libvirt-bin debootstrap

注意修改/bin/sh,链接到/bin/bash。lxc在某些版本上有一个bug,声明为/bin/sh却使用bash语法,导致不如此链接会出现错误。


镜像和设定

使用lxc-create -n name -t template生成镜像。

在/usr/share/lxc/templates可以看到可用的模板。

在/var/cache/lxc/debian会缓存生成过程的临时文件。

生成的镜像需要在镜像内安装lxc,否则无法使用lxc-execute。


资源限制

在config文件内,写入cgroup限定规则。注意,使用内存限定的话,需要在内核参数中加入cgroup_enable=memory

在debian/ubuntu下,可以修改/etc/default/grub文件,使用update-grub重新生成规则。

GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory quiet"

在config文件中可以如下限定:

lxc.cgroup.memory.limit_in_bytes = 512M # 限定内存

lxc.cgroup.cpuset.cpus = 0# 限定可以使用的核

lxc.cgroup.blkio.throttle.read_bps_device = 8:0100# 读取速率限定

lxc.cgroup.blkio.throttle.write_bps_device = 8:0100# 写入速率限定

lxc.cgroup.blkio.throttle.read_iops_device = 8:0100# 读取频率限定

lxc.cgroup.blkio.throttle.write_iops_device = 8:0100# 写入频率限定


执行

lxc-start -n name /bin/echo hello

还可以用以下指令,在已经启动的container里执行进程。

lxc-attach -n name /bin/echo hello

以下指令是用来在未启动的container里执行进程的。

lxc-execute -n name /bin/echo hello

** 注意,虽然系统初始化了所有资源,但是由于sysv-init没有执行,因此系统内初始化并没完成。这导致系统不完整,例如网络部分不可用。 **


网络隔离

自行设定的网络

lxc采用veth技术,每次虚拟机建立时,都会产生一对veth。虚拟机内的一般叫做eth0,虚拟机外的叫做vethXXX。这张网卡可以以任何linux许可的方式进行配置。

dnsmasq所产生的dhcp封包无法被debian guest的dhcp client承认,因此无法使用dnsmasq自动部署网络。


使用iptables配置访问

在开启br-nf后,所有bridge的包都会经过iptables的过滤。因而可以用iptables的FORWARD规则限制guest堆外网的访问。详细配置请参考此处。

相关文章
|
2月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
301 11
|
4月前
|
存储 监控 Linux
Linux环境锁定关键文件防止误删操作流程。
总结以上内容,在Linux环境下锁定重要文档避免误删涉及到多种技术手段与策略组合运作, 包括但不限于利用chatter指挥官固化文档状态至只读模式、运作ACL精准调整访问权利列表、编排自动化流程简
169 20
|
4月前
|
Linux
Linux环境下的UDEV机制及其与守护进程的关联
实际使用时管理员需要熟悉编写合适udev rules去满足特殊需求;同时也需要注意避免编写过度复杂导致无法预料结果rules.UDEVD虽然稳健但错误配置可能导致无法预料问题因此需谨慎处理相关配置工作.
183 16
|
4月前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
307 8
|
5月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
602 16
|
5月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
366 10
|
4月前
|
Ubuntu 安全 Linux
Ubuntu 24.10 发行版登场:Linux 6.11 内核、GNOME 47 桌面环境
Ubuntu 24.10 还带来了 GNOME 47,增强了性能和稳定性,并引入了新功能。此版本的 Ubuntu 还默认在采用 Nvidia 显卡的硬件上切换到 Wayland,并在支持的硬件上默认使用开源的 Nvidia 560 内核模块。 另外需要注意的是,Ubuntu 24.10 是稳定版本,但作为非 LTS 版本,仅支持 9 个月。
|
4月前
|
安全 Linux 网络安全
Linux系统初步设置本地Git环境和生成SSH密钥的步骤。
现在您的Linux系统已经配置好了Git环境,并创建并添加了SSH密钥,可以安全地与远端仓库进行交互,无论是克隆、推送还是拉取操作。此过程确保了数据传输的安全并使版本控制流程更为顺畅。使用Git时应考虑定期更新并管理您的凭据,以确保安全性。
543 0