LXC之namespace模块学习-小结

本文详细探讨了Linux容器(LXC)中的网络命名空间,包括命名空间类型、设备注册、与socket和网络设备的关系。文章通过代码分析介绍了网络命名空间的数据结构和操作,特别是它们如何支持多用户隔离和网络设备的组织。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:

  Networking Namespaces

(1)有那些namespeace

(2命名空间设备指的是那些?

(3)namespacesocket 与网络设备的关系:

  代码分析

2.1 数据结构  struct net {

2.2 网络命名空间”与“ 网络设备”的组织关系图:

2.3 网络命名空间的操作

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

  Networking Namespaces

1有那些namespeace

(2命名空间设备指的是那些?

(3)namespacesocket 与网络设备的关系:

 

1.0  整体框架:namespacesocket,协议栈,网络设备的关系:


图片引用自:http://www.cnblogs.com/zmkeil/archive/2013/05/01/3053545.html

1有那些namespeacelinux系统包括默认的命名空间:“init_net和用户自定义的net

这里namespace 一般是默认的命名空间:“init_net,也就是所有的"网络通信协议"+"网络设备"都是属于默认的命名空间.

网络命名空间定义了2个链表,pernet_list和net_namespace_list

如下

static LIST_HEAD(pernet_list);

static struct list_head *first_device = &pernet_list;

LIST_HEAD(net_namespace_list);

init_net会被链接到net_namespace_list这个双向链表上。

pernet_operations结构将被链接到pernet_list这个双向链表上。

以后,如果没自定义网络命名空间的话,所有想用网络命名空间时都将利用默认的“init_net”

 

引用自:源文档 <http://blog.chinaunix.net/uid-20185802-id-109664.html>

 

(2命名空间设备指的是那些?就是网络设备。通过register_pernet_device注册:

LXC (Linux Containers) 使用的是Linux Namespaces作为其基础架构来创建隔离的容器环境。Namespaces在LXC中扮演着至关重要的角色,它们允许每个容器拥有独立的视图,比如进程ID (PID)、网络、用户ID (UID) 和I/O控制组 (IPC) 等。下面是LXC中几个关键namespace的概述: 1. **PID namespace**: PID namespace使得每个容器内的进程有独立的进程ID,即使宿主机上的进程与容器中的进程具有相同的ID,它们也是隔离的。 2. **Net namespace**: 容器有自己的网络栈,包括IP地址、子网掩码和路由表,这使得容器可以运行独立的网络服务,如HTTP服务器。 3. **IPC namespace**: IPC namespace保证容器间的通信安全,因为它们有自己的套接字和消息队列,避免了不同容器间的数据混乱。 4. **User namespace**: 用户namespace让容器能有自己的用户ID范围,容器内的用户和宿主机上的用户可以有不同的权限。 5. **其他namespace** (如mnt namespace和uts namespace): 这些帮助进一步增强容器的隔离性,比如文件系统挂载点和时区设置。 要创建一个基本的LXC容器并启用这些namespace,你可以使用命令行工具`lxc-create`或配置文件`config.xml`。然而,具体的示例超出了本回答的长度限制,但通常涉及以下步骤: ```shell # 创建一个新的LXC容器 lxc-create -n my_container -t ubuntu # 启动容器并分配namespace lxc-start -n my_container lxc-config set my_container cgroup.cpuset cpuset.cpus=0-1 # 示例指定CPU限制 # 可以在容器内查看已启用的namespace lxc-info -n my_container | grep "Namespace" ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值