文档章节

LXC简介

osc_jerry
 osc_jerry
发布于 2017/09/10 12:48
字数 1156
阅读 28
收藏 0

LXC

LXC是著名的经过严格测试的底层Linux容器运行库。从2008年开始发展,现已在世界各地的关键生产环境中得到证明。其中一些核心贡献者是帮助在Linux内核中实现各种知名集装箱功能的人员。

系统容器

LXC的主要重点是系统容器。也就是说,提供尽可能接近VM但没有运行单独内核并模拟所有硬件的开销的容器。

这是通过内核安全功能(如命名空间,强制访问控制和控制组合)实现的。

非特权容器

非特权容器是没有任何权限运行的容器。这需要对内核中运行容器的用户名空间的支持。用户命名空间合并到主线内核之后,LXC是第一个支持非特权容器的运行库。

实质上,用户名空间隔离给定的UID和GID集合。这通过在主机上的一系列UID和GID之间建立到容器中UID和GID的不同(非特权)范围之间的映射来实现。内核将以这样一种方式转换此映射,即在容器内部,所有UID和GID按照您期望的从主机显示,而在主机上,这些UID和GID实际上是无特权的。例如,在容器内作为UID和GID 0运行的进程可能在主机上显示为UID和GID 100000。可以从相应的用户命名空间手册页中收集实现和工作细节。

由于非特权容器是一种安全增强功能,因此它们自然会受到内核强制执行的一些限制。为了提供一个功能齐全的非特权容器LXC与3个setuid代码交互:

  • lxc-user-nic(setuid帮助器创建一个veth对,并在主机上桥接它)
  • newuidmap(从shawdow库中,设置一个uid映射)
  • newgidmap(从shawdow库中,设置一个gid映射)

一切都是以您自己的用户身份运行,也可以作为用户拥有的uid运行。

一般来说,LXC的目标是利用内核中可用的每个安全功能。这意味着LXC的配置管理将使经验丰富的用户根据自己的需要对LXC进行复杂的调整。

有关LXC安全性的更详细的介绍可以在以下链接中找到:

移除特权

LXC在没有正确的配置这些工具的情况下是可以运行的。只不过你这种容器的用途通常是非常有限的。这里突出两个最常见的问题:

  1. 网络:没有依赖一个setuid帮助器为非特权用户设置适当的网络设备(参见LXC的lxc-user-nic二进制文件),唯一的选择是与主机共享网络命名空间。虽然原则上应该是安全的,但共享主机的网络命名空间仍然是减少隔离的一个步骤,并增加攻击向量。此外,当主机和容器共享相同的网络命名空间时,内核将拒绝任何sysfs挂接。这通常意味着容器内的init二进制文件将无法正确启动。
  2. 用户命名空间:如上所述,用户名空间是一个很大的安全性增强。但是,不依赖特权帮助者,主机上无权限的用户只能将自己的UID映射到容器中。然而,标准的POSIX系统需要65536个UID和GID来保证完整的功能。

配置

LXC通过一些简单的关键字配置,例如:

  • lxc.rootfs.path
  • lxc.mount.entry

LXC通过使用单点命名空间配置关键字。这意味着复杂的配置关键字(如lxc.net.0)会展示各种子项,例如lxc.net.0.typelxc.net.0.linklxc.net.0.ipv6.address等一些更精细的配置。

LXC被用作LXD的默认运行库,LXD是容器管理程序,它暴露出设计良好且稳定的REST-api。

内核需求

LXC在2.6.32以上的任何内核上运行。所有它需要的是一个功能C编译器。 LXC适用于提供必要内核功能的所有架构。这包括(但不限于):

  • i686
  • x86_64
  • ppc,ppc64,ppc64le
  • s390x
  • armvl7,arm64

LXC至少还支持以下C标准库:

  • glibc
  • musl
  • bionic(Android's libc)

向后兼容

LXC一直专注于强大的向后兼容性。事实上,API从1.0.0版起没有被破坏。主LXC目前处于版本2。

© 著作权归作者所有

共有 人打赏支持
osc_jerry
粉丝 0
博文 8
码字总数 13991
作品 0
成都
程序员

暂无文章

使用rancher管理docker并部署springCloud项目的其中一个服务

一、先来个简单的 1.安装docker 2.安装eureka——运行docker命令安装 3.安装eureka——运行dokcer镜像安装 (1)构建eureka的镜像,网易云的docker镜像比较全一些,也可以去https://hub.docke...

monroeCode
4分钟前
0
0
理论与实践:如何从Hadoop迁移到MaxCompute

摘要:MaxCompute大数据计算服务,能提供快速、完全托管的PB级数据仓库解决方案,能够使用户经济且高效地分析处理海量数据。而用户往往之前使用了Hadoop实现大数据计算任务,在选择了阿里云大...

阿里云云栖社区
5分钟前
1
0
mysql: utf8 && utf8mb4

https://mathiasbynens.be/notes/mysql-utf8mb4 临时收藏

阿dai
16分钟前
0
0
面试宝典系列-nginx限流

Nginx自身有的请求限制模块ngx_http_limit_req_module、流量限制模块ngx_stream_limit_conn_module基于令牌桶算法,可以方便的控制令牌速率,自定义调节限流,实现基本的限流控制。 如何Ngi...

suyain
17分钟前
0
0
下拉框选择数据过滤?

需求:下拉框数据新增一条数据,已选择的不能再重新被选择 数据:存放表格数据的数组 scoreTable 下拉框数据 catorgaryArr 定义一个已经选择了的id数组 catorgaryIds 实现: arr 使用来保存每...

西园里的猫
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部