Docker容器原理与实现 |
您所在的位置:网站首页 › docker的原理 › Docker容器原理与实现 |
Docker 容器的原理与实现
周成玉
【摘要】 Linux 容器( Linux Container , LXC )是 docker 的核心技术之一, LXC 利用 chroot 、 namespace 和 cgroup 等技术实现资源的隔离和配额,文章剖析了 LXC 的原理和实现。
【关键词】 chroot, namespace, cgroup, LXC
1 、概述
海关已经广泛使用虚拟机技术多年, IT 资源利用率得到有效提高。近年来,基于 Docker 的轻量级虚 拟化技术正成为 IT 技术热点之一。与传统虚拟机相比, Docker 技术本质上是一种 LXC 引擎。 VM 和 LXC 关 注的问题都是资源的隔离和配额, VM 采用 CPU 、 memory 、 disk 等硬件虚拟化技术, LCX 则借助了 chroot 、 namespace 和 cgroups 等系统调用。
2 、 LXC 的资源隔离
2.1 、 chroot chroot ( change root directory, 更改 root 目录) ,最早在 1979 年的 Unix V7 使用,并在各个版本 的 linux 系统中得以保留。在 linux 系统中,系统默认的目录结构都是以“ / ” ,即根 (root) 开始的。
通过使用 chroot , 系统读取到的目录和文件将不在是旧系统根下的而是指定的新位置下的目录结构和 文件,这样带来两个好处:
( 1 )增加系统的安全性,限制用户权力。经过 chroot 之后,在新根下将访问不到旧系统的根目录结 构和文件,这样就增强了系统的安全性。在登录 (login) 前使用 chroot ,阻止用户访问特定目录。
( 2 )建立一个与原系统隔离的系统目录结构,方便用户的开发。使用 chroot 后,系统读取的是新根 下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件 的静态编译以及一些与系统不相关的独立开发。
Docker 就是利用 chroot 功能,实现每个容器里看到的文件系统都是一个完整的 linux 系统。下面来 看一个简单 shell 脚本,将某个进程及其子进程访问根目录限制在“ /home/container ”目录,该进程及 其子进程将不能访问 linux 系统的其他目录。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |