CIDR(无类别域间路由,Classless Inter-Domain Routing)是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。 所有发送到这些地址的信息包都被送到如MCI或Sprint等ISP。1990年,Internet上约有2000个路由。五年后,Internet上有3万多个路由。如果没有CIDR,路由器就不能支持Internet网站的增多。 CIDR采用8~30位可变网络ID,而不是A-B-C类网络ID所用的固定的8、16和24位。 适当分配多个合适的IP地址,使得这些地址能够进行聚合,减少这些地址在路由表中的表项数。 如,给某个网络分配16个C类地址,采用适当的方法分配这些地址,使得16个地址能够聚合成一个地址。 “无分类”指不考虑IP地址所属的类别,路由的策略完全基于整个32bit IP地址的掩码来操作。
Libcontainer 是Docker中用于容器管理的包,它基于Go语言实现,通过管理namespaces、cgroups、capabilities以及文件系统来进行容器控制。你可以使用Libcontainer创建容器,并对容器进行生命周期管理。 在 2013年Docker刚发布的时候,它是一款基于LXC的开源容器管理引擎。把LXC复杂的容器创建与使用方式简化为Docker自己的一套命令体系。 随着Docker的不断发展,它开始有了更为远大的目标,那就是反向定义容器的实现标准,将底层实现都抽象化到Libcontainer的接口。这就意味 着,底层容器的实现方式变成了一种可变的方案,无论是使用namespace、cgroups技术抑或是使用systemd等其他方案,只要实现了 Libcontainer定义的一组接口,Docker都可以运行。这也为Docker实现全面的跨平台带来了可能。
AppArmor是一个高效和易于使用的Linux系统安全应用程序。AppArmor对操作系统和应用程序所受到的威胁进行从内到外的保护,甚至是未被发现的0day漏洞和未知的应用程序漏洞所导致的攻击。AppArmor安全策略可以完全定义个别应用程序可以访问的系统资源与各自的特权。AppArmor包含大量的默认策略,它将先进的静态分析和基于学习的工具结合起来,AppArmor甚至可以使非常复杂的应用可以使用在很短的时间内应用成功。 AppArmor已经整合进2.6.36版内核。 Docker可以通过AppArmor或者SELinux进行访问控制,既然是访问控制的过程中难免需要进行对其的配置。此项目是通过AppArmor进行防护的,在配置时遇到了许多问题,在此记录。 1.如何调用AppArmor进行Docker的权限控制 这一项在官方文档中有记载。在启动或者运行docker通过参数”–security-opt”加入访问控制的配置文件。–security-opt的默认参数为docker-default。docker-default并非一个实际的配置文件,而是由执行时由GO语言运行的配置模板自动生成并写入AppArmor缓存。(Docker versions 1.13.0 and later) 2.为Docker配置权限文件 由于是为docker的container进行安全配置,我们将配置文件放置于/etc/containers/目录下。为方便管理配置文件的命名与配置名同名。官方列举了一个Nginx 的docker配置文件 #include <tunables/global> profile docker-nginx flags=(attach_disconnected,mediate_deleted) { #include <abstractions/base>
https://github.com/lxc/lxc LXC是Linux containers的简称,操作系统级别的虚拟化技术。它可以在操作系统层次上为进程提供的虚拟的执行环境。一个虚拟的执行环境被称为一个容器(container)。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。 容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心 CPU 本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。